【问题标题】:VBA to compare rows and highlight differences in the same worksheetVBA比较行并突出显示同一工作表中的差异
【发布时间】:2021-08-14 08:03:17
【问题描述】:

每周都会执行一个流程来比较来自两个不同来源的数据。数据已经放在一个工作表中。我必须查看此工作表并突出显示每位员工 2 行内的差异。

总共有从第 4 行开始的 A 列到 J 列的数据。所以我需要比较第 4 行到第 5 行、第 6 行到第 7 行等等......并突出显示所有差异/差异。我也只想比较列 C 到 J 而不是 A 到 J,因为这些数据总是不同的,因为它来自两个不同的来源。

到目前为止我遇到的问题......

  1. 我不知道如何创建一个循环并且只点击我想要比较的列 - C:J - 而不是选择每组范围
  2. 如果每两行有超过 1 个差异,则仅突出显示第一个差异

这是我尝试做的:

Sub HighlightDiff()
 Range("C4:J5").Select
 Selection.ColumnDifferences(ActiveCell).Select
 Range(ActiveCell, ActiveCell.Offset(-1, 0)).Select
 Selection.Interior.ColorIndex = 6

 Range("C6:J7").Select
 Selection.ColumnDifferences(ActiveCell).Select
 Range(ActiveCell, ActiveCell.Offset(-1, 0)).Select
 Selection.Interior.ColorIndex = 6
End Sub

非常感谢任何帮助。

【问题讨论】:

  • 很高兴你的问题在我作曲时出现了!我有几乎相同的问题,但想比较由列分组/指定的可变行数。这当然是一个有用的起点!

标签: excel vba


【解决方案1】:

试试这个:

Sub HighlightDiff()
    Dim rng As Range, rngDiff As Range
    Set rng = Range("C4:J5")              'start here
    Do While Application.CountA(rng) > 0  'loop while have content
        Set rngDiff = Nothing   'reset range
        On Error Resume Next    'ignore "No cells were found" error if no differences
        Set rngDiff = rng.ColumnDifferences(Comparison:=rng.Cells(1))
        On Error GoTo 0         'stop ignoring errors
        If Not rngDiff Is Nothing Then 
            rngDiff.Interior.ColorIndex = 6 'color all differences
            rngDiff.Offset(-1).Interior.ColorIndex = 6
        End If 
        Set rng = rng.Offset(2) 'two rows down
    Loop
End Sub

【讨论】:

  • 蒂姆,非常有帮助。谢谢!我确实更改了 1 件事:``` If Not rngDiff Is Nothing Then rngDiff.Offset(-1, 0).Interior.ColorIndex = 6 ``` 我修改了这一行,因为我宁愿突出显示顶部单元格而不是底部单元格。突出显示两者都会很棒,但我可以接受。我也更喜欢黄色高光与 vbRed。谢谢你的帮助!!
  • 如果您想突出显示两行,您可以同时使用rngDiff.Offset(-1, 0).Interior.ColorIndex = 6rngDiff.Interior.ColorIndex = 6 请参阅上面的更新。
  • 感谢蒂姆,非常有帮助的回答!对 VBA 一无所知,我想知道是否可以将此解决方案推广到不同数量的行,因为我有一张类似的表格,其中包含每天由可变数量的测量员(行)给出的几个站点(列)的等级。如果在评论中难以解释,我已经在stackoverflow.com/questions/69583783/… 发布了我的问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多