| 
    
     |  | 説明文とプログラムからすると、説明文のSheet1とSheet2を間違えているよう ですので、Sheet1とSheet2を読み替えた場合の対応を書いておきます。
 転記前にSheet2の内容をセットするだけです。
 
 #掲示板で教えていただいたコードは、ちゃんと理解するようにしたほうが
 いいと思いますよ。
 動きを理解していれば、今回程度の修正はご自分で出来たと思います。
 
 Sub sample()
 Dim dic As Object
 Dim endRow As Long
 Dim i As Long, j As Long
 Dim v1(), v2(), v3()
 
 With ThisWorkbook.Worksheets("Sheet1")
 'Sheet1のJ列の最終行を取得
 endRow = .Cells(.Rows.Count, "J").End(xlUp).Row
 'Sheet1の製造番号を配列v1へ格納
 v1() = .Range("J3:J" & endRow).Value
 'Sheet1のメモを配列v2へ格納
 v2() = .Range("FG3:IV" & endRow).Value
 End With
 
 '配列v1をループし辞書を作成する
 Set dic = CreateObject("Scripting.Dictionary")
 '▼▼▼ここ『v』に『1』がぬけてますよね?
 'For i = 1 To Ubound(v, 1)
 For i = 1 To Ubound(v1, 1)
 '製造番号に対応するメモの行を一旦、辞書に登録
 If Not dic.exists(v1(i, 1)) Then
 dic(v1(i, 1)) = i
 End If
 Next i
 
 With ThisWorkbook.Worksheets("Sheet2")
 'Sheet2のJ列の最終行を取得
 endRow = .Cells(.Rows.Count, "J").End(xlUp).Row
 'Sheet2の製造番号を配列v1へ格納
 v1() = .Range("J3:J" & endRow).Value
 
 '▼▼▼ここを変更
 'v3の配列サイズを決める
 'ReDim v3(1 To Ubound(v1, 1), 1 To UBound(v2, 2))
 v3() = .Range("FG3:IV" & endRow).Value
 
 '配列v1をループし、製造番号に対応するメモを配列v3へ格納
 For i = 1 To Ubound(v1, 1)
 If dic.exists(v1(i, 1)) Then
 For j = 1 To UBound(v3, 2)
 v3(i, j) = v2(dic(v1(i, 1)), j)
 Next j
 End If
 Next i
 '配列v3をシートに出力する
 .Range("FG3").Resize(UBound(v3, 1), _
 UBound(v3, 2)).Value = v3()
 
 End With
 '配列クリア
 Erase v1, v2, v3
 'オブジェクト解放
 Set dic = Nothing
 End Sub
 
 |  |