列と行の位置が異なる2つの表を比較する方法をご紹介します。
たとえば以下の画像のように、「価格」という列の位置がC列とD列で異なっており、商品コードの位置も7行目と5行目でことなっています。この場合はExcelVBAでループ処理することで解決ができます。
値を比較するコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Sub test() Dim sh1 As Worksheet Dim sh2 As Worksheet ' 比較するシートを変数に格納 Set sh1 = ThisWorkbook.Worksheets("比較1") Set sh2 = ThisWorkbook.Worksheets("比較2") ' 背景色を初期化 sh1.Cells.Interior.Color = xlNone sh2.Cells.Interior.Color = xlNone Dim i As Long Dim j As Long Dim k As Long Dim l As Long ' 比較1シートの列数 For j = 1 To 4 ' 比較2シートの列数 For k = 1 To 6 ' ヘッダーの比較 If sh1.Cells(1, j) = sh2.Cells(1, k) Then ' 比較1シートの行数 For i = 2 To 10 ' 比較2シートの行数 For l = 2 To 10 ' キー項目の比較 If sh1.Cells(i, 1) = sh2.Cells(l, 1) Then ' 値を比較する If sh1.Cells(i, j) <> sh2.Cells(l, k) Then ' 値が異なる場合、色を変更する sh1.Cells(i, j).Interior.Color = RGB(255, 0, 0) sh2.Cells(l, k).Interior.Color = RGB(255, 0, 0) End If GoTo row_continue End If Next row_continue: Next End If Next Next End Sub |
実行結果
列方向と縦方向の位置が同じでなくても比較することができました!
ぜひご活用ください。
ではまた。
コメント