dポイントプレゼントキャンペーン実施中!

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


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

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

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

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

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

A 回答 (1件)

変更前 .Range("A1").CurrentRegion.Offset(1).ClearContents


変更後 .Range("A1").CurrentRegion.Offset(2).ClearContents
式は2行目に入っているのだから、消去するのは3行目以降です。
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2014/11/01 09:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!