Excel VBAを利用して一つのExcelシートから別のシートにデータを転記する方法を解説します。ここでは、1つ目のシートに項目名とそれに対応する値があり、2つ目のシートには項目名のみがあるケースを例に取り上げます。
データを読み込み項目に合わせて転記する

- ソースシートのA列とB列を配列で読み込みます。
- 目的シートのA列の項目と一致の場合、B列に値を転記します。

- 処理を実行すると目的シートのB列に値が書き込まれます。
サンプルコード
Sub TransferData()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim lastRowSource As Long, lastRowDest As Long
Dim data As Variant, item As Variant
Dim i As Long, j As Long
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
' ソースシートと目的シートを設定
Set wsSource = ThisWorkbook.Worksheets("ソース") ' 1つ目のシート名を指定
Set wsDest = ThisWorkbook.Worksheets("目的") ' 2つ目のシート名を指定
' ソースシートの最終行を取得
lastRowSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' 目的シートの最終行を取得
lastRowDest = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row
' ソースシートからデータを読み取り、辞書に格納
For i = 1 To lastRowSource
If Not dict.Exists(wsSource.Cells(i, 1).Value) Then
dict.Add wsSource.Cells(i, 1).Value, wsSource.Cells(i, 2).Value
End If
Next i
' 目的シートの項目名をチェックし、辞書に該当する項目名があれば値を転記
For j = 1 To lastRowDest
item = wsDest.Cells(j, 1).Value
If dict.Exists(item) Then
wsDest.Cells(j, 2).Value = dict(item)
End If
Next j
MsgBox "データ転送が完了しました。"
End Sub
注意点
- このコードは、項目名が一意であることを前提としています。項目名が重複している場合、最初に見つかったデータのみが使用されます。
- シート名やExcelのバージョンによっては、コードの微調整が必要な場合があります。