如果细胞与相邻细胞匹配,如何突出显示细胞

时间:2017-03-24 17:33:05

标签: vba conditional-formatting

我经常处理跨越多列的数据,需要一种方便的方法来突出显示特定列中包含相同值的多行,但我需要在突出显示和非突出显示之间切换。

例如,我在列A中有几行数据,如: 700105862 700105862 700105862 700103235 700103235 700108783 700108783 700108783

我想要做的是突出显示前三行(700105862),然后不突出显示700103235,然后再次突出显示700108783。 我想知道是否有一个条件格式化公式,使这成为可能。

非常感谢任何帮助!

谢谢,

2 个答案:

答案 0 :(得分:0)

当然,如果您知道要突出显示的范围,只需将条件格式设置为x和y值之间。用你没有得到的东西评论这个问题,我会相应地修改答案。

答案 1 :(得分:0)

如果您的号码被分成总是不同数字重复的块,那么您可以使用此VBA代码:

Sub main()
    Dim item As Variant
    Dim startRow As Long
    Dim okHighlight As Boolean

    With Range("A1", Cells(Rows.count, 1).End(xlUp))
        For Each item In GetUniqueValues(.Cells).Items
            If okHighlight Then .Range(.Cells(startRow, 1), .Cells(item, 1)).Interior.ColorIndex = 48
            startRow = item + 1
            okHighlight = Not okHighlight
        Next
    End With
End Sub


Function GetUniqueValues(rng As Range) As Dictionary
    Dim cell As Range
    Dim dict As Dictionary

    Set dict = New Dictionary
    With dict
        For Each cell In rng
            .item(cell.Value) = cell.row - rng.Rows(1).row + 1
        Next
    End With
    Set GetUniqueValues = dict
End Function
使用帮助列可以

条件格式化方法

假设:

  • 您的数据位于A列,从第2行开始

  • B栏是免费的

然后:

  • helper 列B单元格中编写以下公式:

    =IF(A2<>A1,B1+1,0)

  • 使用以下公式将条件格式应用于A列:

    =INT(B2/2)=B2/2

    并选择您想要突出显示单元格的格式