[[20170223111112]] 『2シートのデータ比較』(HARI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『2シートのデータ比較』(HARI)

どうかお力をお貸しください。
VBA初心者です。

2つのシートがあります。
Sheet1は最新のデータ情報、Sheet2は前回のデータ情報。

最新のデータには追加(行)されたデータや
セルの値が変更されたデータがいくつか存在します。
4000行以上のデータがあるので、
VBAで差分を見つけて色で判別できないかと思い
勉強しながら作成中です。

フィルターをかけていなければ
以下で問題なく処理が出来るのですが、
フィルターをかけてしまうと行番号が一致していないせいなのか
セル同士が一致していても色がついてしまいます。

何が原因なのか分かりません。
原因が分かる方がいらっしゃいましたら
コメント頂けないでしょうか?

+@でお願いが…

以下のVBA、Sheet1だけに色を付けているのですが、
Sheet2にも色を付ける場合、どこに入れればいいのでしょうか?

よろしくお願い致しますm(_ _)m

................................................................

Sub Macro1()

  Dim myVal1, myVal2
  Dim i As Long, j As Long, myCnt As Long

  Application.ScreenUpdating = False

  With Sheets("Sheet1")
     .Cells.Interior.ColorIndex = xlNone
     myVal1 = .Range("A1", .Range("O65536").End(xlUp)).Value
  End With

  With Sheets("Sheet2")
     myVal2 = .Range("A1", .Range("O65536").End(xlUp)).Value
  End With

  If UBound(myVal1, 1) >= UBound(myVal2, 1) Then
     myCnt = UBound(myVal2, 1)

  Else
     myCnt = UBound(myVal1, 1)
  End If

  For i = 1 To 9
    For j = 1 To myCnt
      If myVal1(j, i) <> myVal2(j, i) Then
          Sheets("Sheet1").Cells(j, i).Interior.ColorIndex = 3
      End If
    Next
  Next
    Application.ScreenUpdating = True
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


全く同じセル位置同士で比較するだけで良いならば、以下ですよね?
          Sheets("Sheet1").Cells(j, i).Interior.ColorIndex = 3
          Sheets("Sheet2").Cells(j, i).Interior.ColorIndex = 3

これだと、条件付き書式で「=A1<>Sheet2!A1」とするのと同じかと思います。(Sheet2側の条件はSheet1!A1に変えるだけ)

一方だけ行の過不足って無いのでしょうか? 現状では、行が違うと不一致ですよね。 普通は、キーとなる列を対象にVLOOKUP等で一致する行を探し、これで値比較します。
マクロならば、先頭から最後の行までループして、キー列が一致する行を探す感じです。これならフィルタしても対応できる事でしょう。
(???) 2017/02/23(木) 14:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.