- ベストアンサー
エクセル2007 マクロで販売データの転記を行う方法
- エクセル2007のマクロを使用して、ファイルAの販売データをファイルBの詳細表シートに転記する方法について教えてください。
- ファイルAには商品ID、販売日時、販売個数が入力されています。ファイルBは各商品IDごとに1枚のシートに商品情報が記入されています。シートAの販売日時と販売個数をそれぞれのシートにマクロで転記させたいです。
- 「商品IDが変わったら、次のシートへ移動」という命令文を使用して、エクセル2007のマクロで販売データの転記を行う方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
たとえば。 sub macro1() dim r as long dim h as range on error goto errhandle r = workbooks("販売データ.xls").worksheets("販売データシート").range("A65536").end(xlup).row for each h in workbooks("販売データ.xls").worksheets("販売データシート").range("A2:A" & r) h.offset(0, 1).resize(1, 2).copy _ destination:=workbooks("商品ごとの詳細.xls").worksheets(h.value).range("A65536").end(xlup).offset(1) next exit sub errhandle: with workbooks("商品ごとの詳細.xls") with .worksheets.add(after:=.worksheets(.worksheets.count)) .name = h.value end with end with resume end sub #補足 「それぞれのシート」とか「次のシート」とか,具体的にどのシートがどういう具合に対応しているのか,まったく説明されていません。 なので,そういう不足をすっ飛ばしてサンプルマクロをお話しします。実態と合ってなければ追加質問せずに捨てて下さい。
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
ファイルBの各シート情報を主体にする方法は如何でしょうか。 (1)ファイルBのシート数分で繰り返し For i =1 TO WorkSheets.Count シートのタブ名かシートの固定セルで商品IDを確定、販売データ表をオートフィルタ、可視セル表示部分をコピー (iはシート番号なので仮にシートタブ名は、Sheets(i).Nameで取得できる) Next 又は、 For Each ws In WorkSheets 同上 (wsはシートのオブジェクトなので仮にシートタブ名は、ws.Nameで取得できる) Next
- a_fool_of_a_man
- ベストアンサー率50% (2/4)
ファイルAとBがすでに開いてる状態でファイルBの各シートの名が商品IDと同じとした場合でしか使えないマクロですが Windoes("ファイルB.xls").Activate ↑ これでファイルBのシートに移動します Sheets("ABAB").Select や Sheets("CDCD").Select ↑ これでシートに移動します 単純な方法としてはファイルAの2行目にある商品ID・販売日時・販売個数を変数に入れて、ファイルBに移動し商品IDと同じシートに移動して販売日時と販売個数を転記させ、ファイルAに戻って次の3行目って感じで転記するデータが無くなるまで繰り返すって感じですね ファイルAの情報を全て変数に持たせてからファイルBに移動って方法もあります