2つのワークシートがあり、もとのワークシートをコピーしたワークシート上で値を変更しました。
その変更した値だけをもとのワークシートへ反映させる方法です。
目次
変更したい内容
ワークシートは2つです。
- sheet1:もとのデータ
- sheet2:sheet1をコピーして値変更したデータ
![](https://officeqa.net/wp-content/uploads/2021/11/excel-filter-copy-7.png)
sheet1
データの変更をする項目はD列の金額です。
![](https://officeqa.net/wp-content/uploads/2021/11/excel-filter-copy-1.png)
sheet2
変更した個所はB列の野菜の金額です。変更した個所だけ黄色にしています。
変更していないデータは金額が空欄です。
![](https://officeqa.net/wp-content/uploads/2021/11/excel-filter-copy-2.png)
マクロ実行後
赤い枠の金額のみ更新されました。
![](https://officeqa.net/wp-content/uploads/2021/11/excel-filter-copy-8.png)
サンプルデデータ
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