電子書籍の厳選無料作品が豊富!

2種類のファイルがあります。

ファイルA   販売データ
ファイルB   商品ごとの詳細表

ファイルAには、商品ID、販売日時、販売個数が入力されています。

 商品ID  販売日時   販売個数 
 ABAB  2010/06/05    10 
 ABAB  2010/06/07     8
 ABAB  2010/06/12     2
 CDCD  2010/06/06    15
 CDCD  2010/06/09     4
 EFEF   2010/06/01    8
 GHGH  2010/06/12    14
 GHGH  2010/06/15     2

ファイルBは各商品IDごとに1枚のシートに商品情報が記入されています。
シートAの販売日時と販売個数をそれぞれのシートにマクロで転記させていきたいと思ってます。

「商品IDが変わったら、次のシートへ移動」という命令文を教えてください。
お願いします。

A 回答 (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



#補足
「それぞれのシート」とか「次のシート」とか,具体的にどのシートがどういう具合に対応しているのか,まったく説明されていません。
なので,そういう不足をすっ飛ばしてサンプルマクロをお話しします。実態と合ってなければ追加質問せずに捨てて下さい。
    • good
    • 0

ファイルBの各シート情報を主体にする方法は如何でしょうか。


(1)ファイルBのシート数分で繰り返し
  For i =1 TO WorkSheets.Count
   シートのタブ名かシートの固定セルで商品IDを確定、販売データ表をオートフィルタ、可視セル表示部分をコピー
   (iはシート番号なので仮にシートタブ名は、Sheets(i).Nameで取得できる)
  Next

  又は、
  For Each ws In WorkSheets
  同上 
  (wsはシートのオブジェクトなので仮にシートタブ名は、ws.Nameで取得できる) 
  Next
    • good
    • 0

ファイルAとBがすでに開いてる状態でファイルBの各シートの名が商品IDと同じとした場合でしか使えないマクロですが



Windoes("ファイルB.xls").Activate

これでファイルBのシートに移動します

Sheets("ABAB").Select や Sheets("CDCD").Select

これでシートに移動します

単純な方法としてはファイルAの2行目にある商品ID・販売日時・販売個数を変数に入れて、ファイルBに移動し商品IDと同じシートに移動して販売日時と販売個数を転記させ、ファイルAに戻って次の3行目って感じで転記するデータが無くなるまで繰り返すって感じですね

ファイルAの情報を全て変数に持たせてからファイルBに移動って方法もあります
    • good
    • 0

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