別のワークシート上で変更した値のみ反映する方法

2つのワークシートがあり、もとのワークシートをコピーしたワークシート上で値を変更しました。

その変更した値だけをもとのワークシートへ反映させる方法です。

目次

変更したい内容

ワークシートは2つです。

  • sheet1:もとのデータ
  • sheet2:sheet1をコピーして値変更したデータ
ワークシートの並び

sheet1

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

Sheet1

sheet2

変更した個所はB列の野菜の金額です。変更した個所だけ黄色にしています。

変更していないデータは金額が空欄です。

Sheet2

マクロ実行後

赤い枠の金額のみ更新されました。

Sheet1

サンプルデデータ

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
目次