MENU

xlookUp関数のように、マスターと一致したら、複数列を転記する(Dictionary)

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「マスターと一致したら、マスターの複数列を転記する」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

会員番号が一致する、マスターの氏名と、都道府県の2列を転記します。 

Vlookup関数で、複数列を表示するイメージです。

マクロを実行すると、2列のデータが転記されました。

できました(^^)/

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼検索・置換・2表比較 

⇒【ツール】xlookUp関数のように、検索して複数列のデータを転記する

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

Sub デモ_26() '検索して複数列のデータを転記する
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
Application.Calculation = xlCalculationManual '自動計算を停止
Dim マスタ辞書 As Object, マスタkey As Variant, マスタitem As Variant
Dim マスタシート As Worksheet, データシート As Worksheet
Dim マスタ行 As Long, データ行 As Long
Set マスタ辞書 = CreateObject("Scripting.Dictionary")
Set マスタシート = Sheets("sheet1") 'マスタのシート
Set データシート = Sheets("Sheet1") 'データのシート
'初期化
マスタ辞書.RemoveAll
'マスタ辞書作成
With マスタシート
    For マスタ行 = .Range("e3").Row To Cells(Rows.Count, .Range("e3").Column).End(xlUp).Row
        マスタkey = .Cells(マスタ行, .Range("e3").Column).Value
        マスタitem = Array(マスタ行, Range(.Cells(マスタ行, Range("e3").Column + 1), .Cells(マスタ行, Range("e3").Column + 1 + 2 - 1)).Value)
        マスタ辞書.Add マスタkey, マスタitem
    Next マスタ行
End With
'マスタ辞書を転記
With データシート
    For データ行 = .Range("a3").Row To Cells(Rows.Count, .Range("a3").Column).End(xlUp).Row
        マスタkey = .Cells(データ行, .Range("a3").Column).Value
        If マスタ辞書.Exists(マスタkey) Then
         .Cells(データ行, .Range("a3").Column).Offset(0, 1).Resize(1, 2) = マスタ辞書.Item(マスタkey)(1)
        End If
    Next データ行
End With
マスタ辞書.RemoveAll
Application.Calculation = xlCalculationAutomatic ' 自動計算を再開
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

アプリはこちらから↓↓↓↓