|
どうしても分からなくて困っています
どなたかアドバイスをいただけるとうれしいです
ブック1のSheet1とブック2のSheet1があり、Sheet1のリストに載っている情報を
ブック2のSheet1に記載したいのですが、どうしてもうまくいきません
【Sheet1】
A列 B列 C列 D列
123 A T A5000
123 B T A5700
456 A F A6000
567 C F 45600
567 D G A5000
897 A R A6000
888 A T E5000
上記のデータをA列をキーにして、B列D列の情報を
下記のSheet2へ記載したいのです
【ブック1のSheet1】のA列のキーが重複している場合は、一番初めに現れた値を摘要します
【ブック2のSheet1】
A列 B列 C列
111
145
456 A A6000 ←Sheet1のデータB列D列のデータをB列C列に記載
567 C 45600 ←Sheet1のデータB列D列のデータをB列C列に記載
567 C 45600 ←Sheet1のデータB列D列のデータをB列C列に記載
897 A A6000 ←Sheet1のデータB列D列のデータをB列C列に記載
888 A E5000 ←Sheet1のデータB列D列のデータをB列C列に記載
456
567
123 A A5000 ←Sheet1のデータB列D列のデータをB列C列に記載
123 A A5000 ←Sheet1のデータB列D列のデータをB列C列に記載
Dim MyD As Object, i As Long, TBL
Dim MyVal, MyKey, MyItem, MyVal2
Set MyD = CreateObject("scripting.dictionary")
TBL = Range("A2", Range("A" & Rows.Count).End(xlUp)).Resize(, 4).Value
For i = 1 To UBound(TBL, 1)
MyVal = TBL(i, 2) & "_" & TBL(i, 4)
If Not TBL(i, 1) = Empty Then
If Not MyD.exists(TBL(i, 1)) Then
MyD.Add TBL(i, 1), MyVal
End If
End If
Next i
↑ここまで、配列に格納
↓ここから、よく分かりません
MyKey = MyD.keys
MyItem = MyD.items
ThisWorkbook.Activate
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
If MyKey(i).exists(Cells(i, 1)) Then
MyVal2 = Split(MyItem(i), "_")
Range("B" & i).Value = MyVal2(0)
Range("C" & i).Value = MyVal2(1)
End If
Next i
どうかよろしくお願いします
|
|