2つのワークシートがあり、もとのワークシートをコピーしたワークシート上で値を変更しました。
その変更した値だけをもとのワークシートへ反映させる方法です。
目次
変更したい内容
ワークシートは2つです。
- sheet1:もとのデータ
- sheet2:sheet1をコピーして値変更したデータ

sheet1
データの変更をする項目はD列の金額です。

sheet2
変更した個所はB列の野菜の金額です。変更した個所だけ黄色にしています。
変更していないデータは金額が空欄です。

マクロ実行後
赤い枠の金額のみ更新されました。

サンプルデデータ
2つの方法です。いづれも基本的な内容です。
単純に2つのワークシートを比較する方法です。
Sub sample1() Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Worksheets(1) Set ws2 = Worksheets(2) Dim i As Long For i = 2 To 6 If ws1.Cells(i, 2).Value = "野菜" And ws1.Cells(i, 1).Value = ws2.Cells(i, 1) Then ws1.Cells(i, 4).Value = ws2.Cells(i, 4).Value End If Next i End Sub
変更した値「sheet1」を配列に格納する例です。
Sub sample2() Dim ary() As Variant ary = Sheet2.Range("A1").CurrentRegion Dim i As Long For i = 2 To 6 If Cells(i, 2).Value = "野菜" And Cells(i, 1).Value = ary(i, 1) Then Cells(i, 4).Value = ary(i, 4) End If Next i End Sub