【エクセルマクロ】2つのシートを比較して違う箇所に色付けする

エクセルマクロで効率化する

エクセルマクロで、2つのシートを比較し違う箇所に色付けするVBAコードをご紹介します。

以下のような作業でお困りはありませんか?

・シートを比較し違いを把握したい

このページのマクロコードは、コピペで使えます。
せひ、お試しください。

2つのシートを比較し違う箇所に色付けする

以下のマクロを実行すると、色の変更を他のシートに反映します。

Sub シートを比較して違う値に色をつける()

Dim Sheets_1 As Worksheet
Dim Sheets_2 As Worksheet
Dim myList_1 As Variant
Dim myList_2 As Variant
Dim i As Long
Dim j As Long
     

 Set Sheets_1 = Sheets("シート1")
 Set Sheets_2 = Sheets("シート2")
     
 '各シートのA~C列のデータを配列に格納
 Sheets_1.Select
 myList_1 = Sheets_1.Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 3).Value
    
 Sheets_2.Select
 myList_2 = Sheets_2.Range("A1", Range("A" & Rows.Count).End(xlUp)).Resize(, 3).Value
    
 '「シート1」に色つける
 For i = 1 To UBound(myList_1)
    '3列ループ
     For j = 1 To 3
        '2つのシートの値が異なる場合、セルに色をつける
         If myList_1(i, j) <> myList_2(i, j) Then
           'エラーが発生した場合は、異なる値なのでセルに色をつける
            On Error Resume Next
            Sheets_1.Cells(i, j).Interior.Color = 65535
         End If
     Next j
 Next i
    
 '「シート2」に色つける
 For i = 1 To UBound(myList_2)
    For j = 1 To 3
        If myList_1(i, j) <> myList_2(i, j) Then
           On Error Resume Next
           Sheets_2.Cells(i, j).Interior.Color = 65535
        End If
    Next j
 Next i
    
 Set Sheets_1 = Nothing
 Set Sheets_2 = Nothing
 
End Sub

 

マクロ実行前

2シートとも、リストは縦に増減する想定です。


 

マクロ実行後

2シートを比較し、違う箇所に色をつけました。


 

【エクセルマクロ】色の変更を別シートに反映:高速化するテクを紹介するよ
...