条件格式化单元格,如果它们的值等于另一列的任何值

时间:2014-12-07 17:17:34

标签: excel vba excel-formula conditional-formatting

我在AB列中有数据。 B列的数据主要是A数据的重复数据,但并非总是如此。例如:

A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York

B
Budapest
Prague
Los Angeles
Bukarest

我需要在A列中搜索B中的值。如果一行匹配,我需要将A中行的背景颜色更改为红色或其他内容。

6 个答案:

答案 0 :(得分:30)

这是公式

根据公式在条件格式中创建新规则。使用以下公式并将其应用于 $ A:$ A

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))


enter image description here

这是the example sheet to download if you encounter problems


<强> 更新
这里的 @pnuts 的建议也很完美:

=MATCH(A1,B:B,0)>0


答案 1 :(得分:6)

不需要公式。这适用于您需要的任意数量的列,但只会比较同一工作表中的列:

  1. 选择要比较的列
  2. 点击“条件格式”
  3. 单击“突出显示单元格规则”
  4. 单击“重复值”(默认值应该没问题)
  5. 重复项现在以红色突出显示

    • 奖励提示,您可以按颜色过滤每一行,以便在列中保留唯一值,或只保留重复项。

答案 2 :(得分:4)

另一个更简单的解决方案是在条件格式中使用此公式(适用于A列):

=COUNTIF(B:B,A1)

问候!

答案 3 :(得分:3)

你需要做的只是一个简单的循环 这不适用于小写,大写不匹配的测试。 如果这不是你想要的,评论,我可以修改。

如果您打算学习VBA。这是一个很好的开始。

<强>试验:

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String

    sheetName = "Sheet1"            'Insert your sheet name here
    lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

    For lRow = 2 To lastRow         'Loop through all rows

        If Sheets(sheetName).Cells(lRow, "A") = Sheets(sheetName).Cells(lRow, "B") Then
            Sheets(sheetName).Cells(lRow, "A").Interior.ColorIndex = 3  'Set Color to RED
        End If

    Next lRow

End Sub

EXAMPLE

答案 4 :(得分:1)

我一直在研究这个问题,并且喜欢使用for循环从peege编写的方法! (因为我目前正在学习VBA)

但是,如果我们尝试匹配另一列的“ any”值,那么如何使用如下所示的嵌套循环呢?

Sub MatchAndColor()

Dim lastRow As Long
Dim sheetName As String


sheetName = "Sheet1"            'Insert your sheet name here
lastRow = Sheets(sheetName).Range("A" & Rows.Count).End(xlUp).Row

For lRowA = 1 To lastRow         'Loop through all rows
    For lRowB = 1 To lastRow
        If Sheets(sheetName).Cells(lRowA, "A") = Sheets(sheetName).Cells(lRowB, "B") Then

        Sheets(sheetName).Cells(lRowA, "A").Interior.ColorIndex = 3  'Set Color to RED
    End If

Next lRowB
Next lRowA

End Sub

答案 5 :(得分:0)

我无法评论最重要的答案,但是Excel实际上允许您执行此操作而无需添加难看的条件逻辑。

条件格式自动应用到任何没有错误的输入,因此您可以实现与以下相同的效果:

=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))

与此:

= MATCH(A1,$B$1:$B$1000,0)))

如果将上述内容应用于您的数据,则A1会与$ B $ 1:$ B $ 1000中的任何单元格匹配时将被格式化,因为任何不匹配项都将返回错误。