こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA 数式を参照範囲分コピーする方法

作業環境は以下の通りで、Excelの知識は初心者です。
OS:Windws7 / 使用ソフト:Excel2003


商品.xlsには3つのシートが存在します。
シートはそれぞれ、1行目は見出し行としています。

・商品データが入った「生データ」シート
・「生データ」シートから必要な情報を参照や加工する数式がA2~AG2に入った「詳細」シート
・「生データ」シートから必要な情報を参照や加工する数式がA2~G2入った「カテゴリ」シート。

「詳細」「カテゴリ」共に数式の入った行を「生データ」の数(行)に合わせて、オートフィルコピーし、最終的にcsvファイルを作成します。

他に、商品.xlsと同じ作りのファイルが複数あり、それらは「生データ」の行数がバラバラの為、VBAで処理したく検索したところ以下のページを発見しました。
http://www.excel.studio-kazu.jp/kw/20110513073632.html

VBAは初心者の為、このVBAの意味を検索しながら以下の様に理解して修正したのですが、思うように処理できずにいます。
何が違っているか教えて頂けないでしょうか。

また、できれば数式だけが入ったファイルを雛形として用意し、
生データだけのファイルは別に持ち、処理する形が望ましいのですが
VBAで可能な事なのでしょうか?


lasとは、生データの最後尾を定義
詳細のA1~AG2セルから1つ下のセルの値を消去し、2行目をコピーし
生データの2行目~最後尾までの行分の数式を貼り付ける
カテゴリにも同じ処理を与える

Sub データ抽出()
Dim las As Long

las = Sheets("生データ").Range("A" & Rows.Count).End(xlUp).Row
With Sheets("詳細")
.Range("A1").CurrentRegion.Offset(1).ClearContents
.Range("2:2").Copy
.Range("2:" & las).PasteSpecial xlFormulas
End With

With Sheets("カテゴリ")
.Range("A1").CurrentRegion.Offset(1).ClearContents
.Range("2:2").Copy
.Range("2:" & las).PasteSpecial xlFormulas
End With

End Sub

投稿日時 - 2014-10-31 15:48:03

QNo.8808986

困ってます

質問者が選んだベストアンサー

変更前 .Range("A1").CurrentRegion.Offset(1).ClearContents
変更後 .Range("A1").CurrentRegion.Offset(2).ClearContents
式は2行目に入っているのだから、消去するのは3行目以降です。

投稿日時 - 2014-10-31 20:25:23

お礼

> 詳細のA1~AG2セルから1つ下のセルの値を消去し

あぁ…本当です。
自分なりに分析しておきながら何やってたのでしょう…

ありがとうございました。

投稿日時 - 2014-11-01 09:19:13

このQ&Aは役に立ちましたか?

17人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問