プロが教えるわが家の防犯対策術!

エクセル VBA で他の表のリストを紐付けるには、
どのような、コードを記入すればよろしいでしょうか?

A1にBAA、A6にCAA、A11にEAAという項目があります。(図 マクロ実行前参照)
項目の下の数字を検索値として、リスト(別ワークブック)の
C列とD列の値を紐付けしたいのですが、
その場合どのようなコードを記入すればよろしいでしょうか?

※リスト(別ワークブック)はBAA、CAA、EAAの3項目が全て混ざった形のため
 その項目を自動認識して、数字の検索値で紐付けする事は可能でしょうか?

よろしくお願い致します。

「エクセル VBA で他の表のリストを紐付」の質問画像

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/17 21:22

リスト(別ワークブック)を現在のブックにコピーできますか?



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

この回答への補足

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

補足日時:2012/10/10 22:00
    • good
    • 0

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