- ベストアンサー
マクロで2つのブックの条件一致を転記
- 2つのエクセルブックにはIDデータ表とID管理票があります。
- IDデータ表のIDとID管理票のIDを一致させ、払い出し区分に基づいて日付を転記します。
- FINDメソッドやオフセットを使用して繰り返し処理を行います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
順繰り拾って、探して確認して記入する、だけです。 sub macro1() dim w0 as worksheet, w1 as worksheet dim h as range, Target as range set w0 = workbooks("IDデータ表.xls").worksheets("シート名") set w1 = workbooks("ID管理表.xls").worksheets("シート名") ’データ表のA列を巡回する for each h in w0.range("A2:A" & w0.range("A65536").end(xlup).row) ’管理表から探す set target = w1.cells.find(what:=h.value, lookin:=xlvalues, lookat:=xlwhole) ’見つけたら処理を行う if not target is nothing then select case h.offset(0, 1).value case "新規" target.offset(0, 1) = h.offset(0, 2).value case "変更" target.offset(0, 2) = h.offset(0, 2).value case "廃止" target.offset(0, 3) = h.offset(0, 2).value case else 'do nothing end select end if next end sub #「新規」や「変更」などが間違いなく記入されてる前提のご相談になってますが、そうでない場合とかも考えます。
お礼
keithin様 拙い説明の中コードを記述して頂きありがとうございます!! 分岐の所をifで条件を分けないと駄目だという固定観念に囚われて CASEを使う事,全体で検索する方法等、コードを読み解き参考にさせて頂きます!! ベストアンサーに選ばさせて頂きます #「新規」や「変更」などが間違いなく記入されてる前提のご相談になってますが、 そうでない場合とかも考えます。 新規,変更,廃止はシステムからcsv出力するので決まっています・・・が 文言が違った場合 適宜対応させて頂きます。 お忙しい中 ありがとうございました!!!