• 締切済み

エクセル VBA で他の表のリストを紐付けたい

エクセル VBA で他の表のリストを紐付けるには、 どのような、コードを記入すればよろしいでしょうか? A1にBAA、A6にCAA、A11にEAAという項目があります。(図 マクロ実行前参照) 項目の下の数字を検索値として、リスト(別ワークブック)の C列とD列の値を紐付けしたいのですが、 その場合どのようなコードを記入すればよろしいでしょうか? ※リスト(別ワークブック)はBAA、CAA、EAAの3項目が全て混ざった形のため  その項目を自動認識して、数字の検索値で紐付けする事は可能でしょうか? よろしくお願い致します。

みんなの回答

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

こんばんは! 別Bookではなく アップされている左側の画像のSheetがSheet1・右側の表がSheet2にあるとしての一例です。 Sub test() Dim ws1 As Worksheet, ws2 As Worksheet, i As Long, k As Long, str As String Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") ws2.Columns(1).Insert k = ws2.Cells(Rows.Count, 2).End(xlUp).Row Range(ws2.Cells(2, 1), ws2.Cells(k, 1)).Formula = "=B2&""_""&C2" ws1.Columns(1).Insert For i = 1 To ws1.Cells(Rows.Count, 2).End(xlUp).Row If ws1.Cells(i, 2) <> "" Then If Not IsNumeric(ws1.Cells(i, 2)) Then str = ws1.Cells(i, 2) Else ws1.Cells(i, 1) = str & "_" & ws1.Cells(i, 2) End If End If If ws1.Cells(i, 1) <> "" Then If WorksheetFunction.CountIf(ws2.Columns(1), ws1.Cells(i, 1)) Then k = WorksheetFunction.Match(ws1.Cells(i, 1), ws2.Columns(1), False) With ws1.Cells(i, 3) .Value = ws2.Cells(k, 4) .Offset(, 1) = ws2.Cells(k, 5) End With Else ws1.Cells(i, 3) = "該当データなし" End If End If Next i ws1.Columns(1).Delete ws2.Columns(1).Delete End Sub こんな感じではどうでしょうか?m(_ _)m

n151713m
質問者

お礼

お礼が遅くなり申し訳ありません。 教えていただいたコードで勉強させていただきました。 とても勉強になりました。ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

リスト(別ワークブック)を現在のブックにコピーできますか? 出来るのなら、コピーしてその表に「名前」をつける。 そうすれば、同じブック内ならVLookUpで参照可能。(範囲に上記の「名前」を指定する)

n151713m
質問者

補足

bin-chan様 回答ありがとうございます。 VLookUpで参照可能ですが、実際のリストは項目も多く手間がかかり、 VLookUpの際作業を間違える可能性があるため VBAで自動化できないかと考えました。

関連するQ&A