hiko-blog

VBA業務改善

MENU

データを検索して代入する_配列

Sub データを検索して代入する_配列()

    Dim シート1 As Worksheet

    Dim シート2 As Worksheet

    Dim データ1 As Variant

    Dim データ2 As Variant

    Dim 結果 As Variant

    Dim i As Long, j As Long

    ' シートの参照

    Set シート1 = Worksheets("Sheet1") ' シート名を適切に変更

    Set シート2 = Worksheets("Sheet2") ' シート名を適切に変更

    ' シート1のデータを配列に読み込む

    データ1 = シート1.Range("A1:C" & シート1.Cells(シート1.Rows.Count, "A").End(xlUp).Row).Value

    ' シート2のデータを配列に読み込む

    データ2 = シート2.Range("A1:C" & シート2.Cells(シート2.Rows.Count, "A").End(xlUp).Row).Value

    ' 結果を格納する配列を初期化

    ReDim 結果(1 To UBound(データ1, 1), 1 To 1)

    ' シート1のデータに対して処理

    For i = LBound(データ1, 1) To UBound(データ1, 1)

        ' シート2のデータに対して処理

        For j = LBound(データ2, 1) To UBound(データ2, 1)

            ' 検索値が一致する場合

            If データ1(i, 1) = データ2(j, 1) And データ1(i, 2) = データ2(j, 2) Then

                ' 結果を代入

                結果(i, 1) = データ2(j, 3) ' シート2のc列に対応

                Exit For ' 一致したらループを抜ける

            End If

        Next j

    Next i

    ' シート1のC列に結果を代入

    シート1.Range("C1:C" & UBound(結果, 1)).Value = 結果

End Sub