値が一致するかどうかに基づいて sheet2 から sheet1 にコピーします

値が一致するかどうかに基づいて sheet2 から sheet1 にコピーします

このコードの目的は、 の列を反復処理しsheet1、各値が の行の値と一致するかどうかを確認することです。値が一致する場合は、から の5 行の情報を、その時点での特定の行にsheet2コピーします。sheet2sheet1

問題点:

  • if ステートメントがある最初の行でエラー 1004 が発生します。
  • Next bエラーも出ると思います

VBA コード:

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
        Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
        Next b
        End If
Next i

答え1

範囲の行と列を数値として指定するには、Cellsの代わりにを使用する必要がありますRange。また、Next b行はネストされたステートメント内にあるため、エラーが発生します。代わりに、 を使用して For ループを終了し、 をステートメントの外側に移動するIf必要があります。Exit ForNext bIf

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
            Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
            Exit For
        End If
    Next b
Next i

関連情報