作業環境は以下の通りで、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
お礼
> 詳細のA1~AG2セルから1つ下のセルの値を消去し あぁ…本当です。 自分なりに分析しておきながら何やってたのでしょう… ありがとうございました。