|
元シートは以下
商品名
a1
a2
a3
a4
a5
先シートは以下
商品名 価格 価格2
a2 100 200
a3 110 220
a4 120 240
元シートに先シートの商品名をキーに価格、価格2を取り込もうとした場合に
元シートに商品名のキーはあるが
先シートに商品名のキーがない場合の回避方法教えてください。
For m = 1 To UBound(c1) '検索用配列の要素数分ループ
Keyval = c1(m, 1)
c1(m, 2) = myDic.Item(Keyval)(0) '検索値のKeyでItemを抽出
c1(m, 3) = myDic.Item(Keyval)(1) '検索値のKeyでItemを抽出
ここにで元シートに商品キーがあるが先シートに商品
キーがない場合を教えてください。
Next m
Sub Sample2()
Dim c1 As Variant
Dim c2 As Variant
Dim Keyval As String
Dim ItemVal As Variant
Dim ItemVal1 As String
Dim ItemVal2 As String
Dim MaxRow As Long
Dim n As Long
Dim m As Long
Dim myDic As Object
Windows("サンプル2.xlsm").Activate
Sheets("元").Select
Range("A1").Select
c1 = Range("A1:C9")
Windows("サンプル2.xlsm").Activate
Sheets("先").Select
Range("A1").Select
c2 = Range("A1:C9")
Set myDic = CreateObject("Scripting.Dictionary")
For n = 1 To UBound(c2) '参照用の配列を要素数分ループ
Keyval = c2(n, 1) '3.Keyを格納
ItemVal1 = c2(n, 2) '4.Itemを格納
ItemVal2 = c2(n, 3) '4.Itemを格納
ItemVal = Array(ItemVal1, ItemVal2)
'登録されていなければ登録
'※Dictionaryは重複登録出来ない
'今回のサンプルデータは初めから重複はありません。
If Not myDic.Exists(Keyval) Then
myDic.Add Keyval, ItemVal
End If
Next n
For m = 1 To UBound(c1) '検索用配列の要素数分ループ
Keyval = c1(m, 1)
c1(m, 2) = myDic.Item(Keyval)(0) '検索値のKeyでItemを抽出
c1(m, 3) = myDic.Item(Keyval)(1) '検索値のKeyでItemを抽出
Next m
Windows("サンプル2.xlsm").Activate
Sheets("元").Select
Range("A1").Select
Range("A1:C9") = c1
Set myDic = Nothing
Set c1 = Nothing
Set c2 = Nothing
End Sub
|
|