检查2张纸之间的差异,并用“差异”列突出显示差异?

时间:2018-11-16 01:20:36

标签: excel vba excel-vba ms-access access-vba

我有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

1 个答案:

答案 0 :(得分:0)

我认为将所有数据放在同一张纸中会更好,更容易,因为您要比较两张纸上总是相同的行。所以我这样做了:

enter image description here

您将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一词,则将其突出显示。

希望您可以根据自己的需要对此进行调整。