列と行の位置が異なる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 | 
実行結果
列方向と縦方向の位置が同じでなくても比較することができました!
ぜひご活用ください。
ではまた。
 
  
  
  
  

コメント