当特定文本位于另一列中时,如何突出显示列中具有相同值的所有单元格

How to highlight all cells of the same value in a column when a specific text is in another column

您好,我正在尝试为此使用 VBA 或条件格式,但它无法按照我想要的方式工作:/

B 列是由不同的人一次输入一个值的列表,C 列是此人的状态。 我想要实现的目标:只有当 C 列为“OUT”时,相邻单元格(B 列)中的值才会被遮蔽,并且该单元格的所有相同值也会被遮蔽。

我可以对 C 列中给定“OUT”的 B 列单元格进行阴影处理,但我无法使之前的所有相同值也被阴影处理。 有 3 种可能的状态:NEW、AFTERNOON、OUT

有人有什么想法吗?我附上了一张照片希望它解释得更清楚

Is there a way to highlight more than 2 cells? If I have 3 of same value, only the last 2 duplicates will be highlighted – geravie498 5 hours ago

在这种情况下,您只需要一个规则。

我们假设数据在 B1:C10 中。相应地调整公式。

$B:$B=$B1$C:$C="OUT"

下方的范围内匹配B1的所有值

规则

=INDEX($B:$B,MATCH(1,($B:$B=$B1)*($C:$C="OUT"),0))

我真的很喜欢@Siddharth,但为了完整起见,您可以在 VBA 中使用以下方法: 将此代码粘贴到您 sheet 的模块

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lCodesCol As Long: lCodesCol = 3
    If Target.Column <> lCodesCol And Target.Column <> lCodesCol - 1 Then Exit Sub
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Dim vData As Variant
    Dim i As Long, j As Long
    Dim lFirstRow As Long: lFirstRow = 2
    Dim lLastRow As Long
    Dim rngToHighlight As Range
    
    With Me
        lLastRow = WorksheetFunction.Max(lFirstRow, _
                                         .Cells(.Rows.Count, lCodesCol).End(xlUp).Row, _
                                         .Cells(.Rows.Count, lCodesCol - 1).End(xlUp).Row)
        vData = .Range(.Cells(1, lCodesCol - 1), .Cells(lLastRow, lCodesCol)).Value
        
        For i = lFirstRow To lLastRow
            If vData(i, 2) = "OUT" And vData(i, 1) <> "" Then
                For j = lFirstRow To lLastRow
                    If vData(i, 1) = vData(j, 1) Then
                        If rngToHighlight Is Nothing Then
                            Set rngToHighlight = .Cells(j, lCodesCol - 1)
                        Else
                            Set rngToHighlight = Union(.Cells(j, lCodesCol - 1), rngToHighlight)
                        End If
                    End If
                Next j
            End If
        Next i
        
        With .Cells(lFirstRow, lCodesCol - 1).Resize(lLastRow, 1).Interior
            .Pattern = xlNone
        End With
        
        If Not rngToHighlight Is Nothing Then
            With rngToHighlight.Interior
                .Pattern = xlSolid
                .Color = RGB(200, 200, 200)
            End With
        End If
    End With
    
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

请注意,条件格式比您可以编写的任何 vba 代码都快得多,并且随着数据的增长,差异会越来越明显。