配列(基礎実践)参照設定:Microsoft Scripting Runtime連想配列Currentregionを使う

Sub 連想配列Currentregionを使う()
'************事前準備*******************
'参照設定:Microsoft Scripting Runtime
'***************************************

'***************************************
'タイマーをセット
'***************************************
Dim startTime As Single, endTime As Single
    startTime = Timer
'***************************************
'Keyになる集計表の列を配列に格納
'***************************************
Dim XX As Long
Dim arrSyukei As Variant
Set Smg = Sheets("Sheet2")
Set Myedge = Sheets("Sheet1")

 XX = Smg.Cells(Rows.Count, 1).End(xlUp).Row
arrSyukei = Smg.Range("A11:A" & XX).Value

'***************************************
'データシート全体を配列に格納
'***************************************
Dim YY As Long
Dim arrEdge As Variant
 YY = Myedge.Cells(Rows.Count, 1).End(xlUp).Row
 '注意 データ範囲内を指定すること
arrEdge = Myedge.Range("A2").CurrentRegion.Value
 
'***************************************
'連想配列Dictionaryを使って処理
'***************************************
Dim arrHit() As Variant
ReDim arrHit(1 To UBound(arrSyukei), 1 To 1)

Dim Dicedge As Dictionary
Set Dicedge = New Dictionary
Dim AA As Long, BB As Long

For BB = LBound(arrEdge) To UBound(arrEdge)
  Dicedge.Add arrEdge(BB, 1), arrEdge(BB, 2) 'keyにする列、出力したい列
Next BB

Dim Syukeikey As Variant

For AA = LBound(arrSyukei) To UBound(arrSyukei)
 Syukeikey = arrSyukei(AA, 1)    'keyで結び付ける
 If Dicedge.Exists(Syukeikey) Then
 arrHit(AA, 1) = Dicedge(Syukeikey)
 Else
 arrHit(AA, 1) = ""
 End If
Next AA

'***************************************
'連想配列の要素を集計表に転記
'***************************************
Smg.Range("E11:E" & XX) = arrHit    '出力する列

'***************************************
'処理時間を表示
'***************************************
endTime = Timer
    MsgBox endTime - startTime
    
End Sub