• ベストアンサー

マクロについて質問です。

画像のように別のブックがあって同じレイアウトでデータが並んでいるとします。ブック1が主のデータです。ブック2のA列にある数字をめやすに、ブック1のA列に同じ数字があったらそこから下7行横4列を置き換えるということはできるのでしょうか。画像でいうと、数字の5と8の行列が入れ替えられる感じです。もし、こういうことができるマクロがありましたら、教えていただきたいです。よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >ブック1の標準モジュールとしてブック1以外の開いているブックからとすることはできるでしょうか。 ↓のコードをBook1の標準モジュールにしてみてください。 Sub Sample2() Dim i As Long, c As Range, wB As Workbook, wS As Worksheet Set wB = Workbooks(2) Set wS = wB.Worksheets("Sheet1") With ThisWorkbook.Sheets("Sheet1") For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row If wS.Cells(i, "A") <> "" Then Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(7, 3).Copy wS.Cells(i, "B") End If End If Next i End With End Sub 尚、前提条件として、 (1)一旦BOOK1を開いておく (2)メニューバーのファイル(Excel2007の場合はOfficeボタン)→ 開く → 保存場所から「Book2」を開く (3)メニューの表示から「整列」で二つのブックを並べて表示しておく。 となっているとします。 ※(3)に関しては無理に並べて表示しておく必要はありません。 別窓でBook1を開いている場合はエラーとなります。m(_ _)m

yoshimitsu525
質問者

お礼

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

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 Book2の標準モジュールです。 Sub Sample1() Dim i As Long, c As Range, wB As Workbook, wS As Worksheet Set wB = Workbooks("Book1.xlsx") Set wS = wB.Worksheets("Sheet1") With ThisWorkbook.Worksheets("Sheet1") For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If .Cells(i, "A") <> "" Then Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(7, 3).Copy .Cells(i, "B") End If End If Next i End With End Sub ※ Book2のSheet1のA列に検索したいデータは7行おきにあるとします。 ※ Book1が開いていない場合はエラーとなります。 (Book1を開く場合は保存場所のフルパスを記載します) とりあえずはこの程度で・・・m(_ _)m

yoshimitsu525
質問者

補足

回答ありがとうございます。説明が下手で申し訳ないのですが、ブック1の標準モジュールとしてブック1以外の開いているブックからとすることはできるでしょうか。

関連するQ&A