在两张纸上匹配同一列的值,然后比较整行的差异

我在这里有另一个post的代码forms,但我似乎无法得到它实际上突出显示每行单个单元格的差异。 我有一张最新的表格和一张上一张表格。 这个想法是,代码应该比较一列中的序列号(两个工作表上都是一样的),并做两件事情:

1)如果当前工作表上显示一个值,但不在“上一个”上,则当前工作表上的整个行将高亮显示为“绿色”。 (这与当前的代码工作); 2)如果在两张纸上都有匹配的值,那么应该比较这些行,并且当前页中与“上一页”不同的任何值都会高亮显示为黄色。 (这不起作用)

列的数量和顺序始终相同。 序列号不会更改,并且对每个条目都是唯一的。 我一直在看的代码是:

Sub NewUpdates() Const ID_COL As Integer = 31 'ID is in this column Const NUM_COLS As Integer = 32 'how many columns are being compared? Dim shtNew As Excel.Worksheet, shtOld As Excel.Worksheet Dim rwNew As Range, rwOld As Range, f As Range Dim x As Integer, Id Dim valOld, valNew Set shtNew = ActiveWorkbook.Sheets("CurrentList") Set shtOld = ActiveWorkbook.Sheets("PreviousList") Set rwNew = shtNew.Rows(5) 'first entry on "current" sheet Do While rwNew.Cells(ID_COL).Value <> "" Id = rwNew.Cells(ID_COL).Value Set f = shtOld.UsedRange.Columns(ID_COL).Find(Id, , xlValues, xlWhole) If Not f Is Nothing Then Set rwOld = f.EntireRow For x = 1 To NUM_COLS If rwNew.Cells(x).Value <> rwOld.Cells(x).Value Then rwNew.Cells.Interior.Color = vbYellow Else rwNew.Cells.Interior.ColorIndex = xlNone End If Next x Else rwNew.EntireRow.Interior.Color = vbGreen 'new entry End If Set rwNew = rwNew.Offset(1, 0) 'next row to compare Loop End Sub 

编码本身并没有什么改变,但我从中得到的原始讨论没有再继续下去。 任何更新的想法,以便我可以突出显示单个细胞显示差异?

编辑:find蒂姆·威廉姆斯回答类似的问题的链接,我发现这个代码。 它可以在这里find。

如果您将颜色更改为黄色的部分(注意附加'(x)'),则该部分应该可以工作:

 For x = 1 To NUM_COLS If rwNew.Cells(x).Value <> rwOld.Cells(x).Value Then rwNew.Cells(x).Interior.Color = vbYellow Else rwNew.Cells(x).Interior.ColorIndex = xlNone End If Next x