我在A
和B
列中有数据。 B
列的数据主要是A
数据的重复数据,但并非总是如此。例如:
A
Budapest
Prague
Paris
Bukarest
Moscow
Rome
New York
B
Budapest
Prague
Los Angeles
Bukarest
我需要在A
列中搜索B
中的值。如果一行匹配,我需要将A
中行的背景颜色更改为红色或其他内容。
答案 0 :(得分:30)
这是公式
根据公式在条件格式中创建新规则。使用以下公式并将其应用于 $ A:$ A
=NOT(ISERROR(MATCH(A1,$B$1:$B$1000,0)))
这是the example sheet to download if you encounter problems
<强> 更新 强>
这里的 @pnuts 的建议也很完美:
=MATCH(A1,B:B,0)>0
答案 1 :(得分:6)
不需要公式。这适用于您需要的任意数量的列,但只会比较同一工作表中的列:
重复项现在以红色突出显示
答案 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
答案 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中的任何单元格匹配时将被格式化,因为任何不匹配项都将返回错误。