我有2个工作表,其中有一个脱机数据和一个来自DB服务器的在线数据,我想对两个工作表之间的差异进行排序,并突出显示差异并计算差异,如果还有其他数值,则在末列中显示计数值在最后一栏中必须说“相同”。 例如:工作表1
A B C D
T1 T2 T3 T4
T1 T2 T3 T4
第2张纸
A B C D
T1 T2 T3 T4
T1 T2 T4 T5
结果->工作表3应该是
A B C D E
T1 T2 T3 T4
T1 T2 T3 T4 Same
T1 T2 T3 T4
T1 T2 T4 T5 2 difference
我所拥有的代码突出显示了差异,但没有将Sheet 1的值粘贴到Sheet 3中。我的最终结果是比较Sheet1和Snd Sheet2之间的相同行和单元格,并且必须将差异粘贴到Sheet 3中连续粘贴两行。我们非常感谢您的帮助。
Sub Compare()
Dim ColumnCount, RowCount As Long
Dim w As Worksheet, r As Range
'Clearing the contents of the third sheet for the fresh comparison
usedCoulms = ThisWorkbook.Worksheets("Sheet4").UsedRange.Columns.Count
usedRows = ThisWorkbook.Worksheets("Sheet4").UsedRange.Rows.Count
For i = 1 To usedRows
For j = 1 To usedCoulms
Sheets("Sheet4").Cells(i, j).Value = ""
Sheets("Sheet4").Cells(i, j).Interior.Color = RGB(255, 255, 255)
Next
Next
'Coulmn count of first sheet
ColumnCount = ThisWorkbook.Worksheets("Sheet1").UsedRange.Columns.Count
'row count of first sheet
RowCount = ThisWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count
For i = 1 To RowCount
For j = 1 To ColumnCount
If Sheets("Sheet1").Cells(i, j).Value <> Sheets("Sheet2").Cells(i, j).Value Then 'Comparing if values are not equal
Sheets("Sheet4").Cells(i, j).Value = Sheets("Sheet1").Cells(i, j).Value 'Copying the Header of the Mismatched Cell
Sheets("Sheet4").Cells(i, j).Value = Sheets("Sheet2").Cells(i, j).Value 'CStr("MisMatch") 'If mismatch setting set value as MisMatch
Sheets("Sheet4").Cells(i, j).Interior.Color = 65535 'Highlighting with Yellow color
Else
Sheets("Sheet4").Cells(i, j).Value = Sheets("Sheet2").Cells(i, j).Value
'If values are same copy the first sheets value if dont want to copy can skip this
End If
Next
Next
MsgBox "SORTINGCOMPLETE"
End Sub
答案 0 :(得分:0)
我认为将所有数据放在同一张纸中会更好,更容易,因为您要比较两张纸上总是相同的行。所以我这样做了:
您将Sheet1的第2行与Sheet2的第2行进行比较,将row3与第3行进行比较,依此类推...
然后,在评估栏中,我有这个公式:
=IF(4-SUMPRODUCT(--(A2:D2=F2:I2))>0;4-SUMPRODUCT(--(A2:D2=F2:I2))&" difference";"same")
如您所见,因为没有差异,所以第一次比较会返回same
。第二个比较(第3行)返回2 difference
,因为只有2个匹配项。
要突出显示评估,只需一个条件格式设置规则。如果文本包含 difference
一词,则将其突出显示。
希望您可以根据自己的需要对此进行调整。