VBA 循环突出显示不一致

标签 vba excel for-loop

我有一个包含两列(A 和 B)的电子表格。我想(FOR)循环遍历 B 列,直到两个或多个单元格值匹配。对于在 B 列中匹配的单元格,我想遍历它们在 A 列中的对应值。如果它们的对应值不相同,我希望所有涉及的行都被突出显示。

我知道它不正确/不完整,但以下是我想遵循的基本结构。非常感谢任何和所有帮助。谢谢你。

Sub MySUb()
  Dim iRow As Integer

  For iRow = 2 To ActiveSheet.UsedRange.Rows.Count
    If Trim(range("A" & iRow)) <> "" And Trim(range("B" & iRow)) = Trim(range("B" & iRow)) Then
      range("A" & iRow, "B" & iRow).Interior.ColorIndex = 6
    End If
  Next
End Sub

enter image description here

最佳答案

您可以先根据 B 列进行排序,然后将代码修改为:

Sub MySUb()
  Dim iRow As Integer

  For iRow = 1 To ActiveSheet.UsedRange.Rows.Count
    If Trim(Range("A" & iRow).Text) <> "" And _
    Trim(Range("B" & iRow).Text) = Trim(Range("B" & iRow + 1).Text) And _
    Trim(Range("A" & iRow).Text) <> Trim(Range("A" & iRow + 1).Text) Then
      Range("A" & iRow, "B" & iRow).Interior.ColorIndex = 6
      Range("A" & iRow + 1, "B" & iRow + 1).Interior.ColorIndex = 6
    End If
  Next
End Sub

Sample table

编辑:
这是一个更好的解决方案,它可以处理在 B 列中有 >2 个匹配单元格但 A 中的相应单元格不匹配(即其中至少一个是不同的)的情况。在这种情况下 全部 这些细胞被标记。
 Sub MySUb()
  Dim iRow As Integer
  Dim jRow As Integer
  Dim kRow As Integer

  For iRow = 1 To ActiveSheet.UsedRange.Rows.Count
    'If Trim(Range("A" & iRow).Text) <> "" Then
    For jRow = iRow To ActiveSheet.UsedRange.Rows.Count 'Finds the last non-matching item in B
     If Trim(Range("B" & jRow).Text) <> Trim(Range("B" & iRow).Text) Then
       Exit For
     End If
    Next jRow
    For kRow = iRow To jRow - 1
     If Trim(Range("A" & iRow).Text) <> Trim(Range("A" & kRow).Text) Then
      Range("A" & iRow, "B" & kRow).Interior.ColorIndex = jRow + 1 'Or can be 6
     End If
    Next kRow
  Next iRow
End Sub

Sample table

关于VBA 循环突出显示不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252352/

相关文章:

excel - 从文件夹和子文件夹中获取文件列表 Excel VBA

vba - 在 Excel-VBA 中为整列添加撇号

vba - isEmpty() 总是返回 false

Excel VBA - 将多个用户表单复选框值写入单个单元格

python - 如何使用 python 中的循环删除字符串中的空格?

mysql - ruby excel 阅读器,电子表格 gem

excel - 在 Excel 中将字符串转换为 int 以表示空或空白

c# - 如何在C#中的数字前用零制作Excel

c++ - OpenMP 并行发送哪个元素?

javascript - 如何更改 JavaScript 中的值而不保存到另一个变量中