Excel比较两列并突出显示重复项。

46

我有一个包含10000行的Excel文件,列A中的某些值相同。

例如:

A1 - P7767

A2 - P3443

A3 - P7767

A4 - P8746

A5 - P9435

我有另外一列包含100行数据,其中包含在A列中找到的某些值,

B1 - P7767

B2 - P8746
我需要突出显示列A中所有与列B中的任何值相同的单元格。
基本上,列B检查是否能在列A中找到相同的值,如果是,则突出显示该单元格,当在列B中未找到该值时,保留任何单元格白色。
我希望我已经说明得很清楚了。我已经做了一些研究,我相信我需要使用条件格式化来获得这个结果,但我卡在了要使用的公式上,并且似乎找不到在线示例(也许我搜索的术语不正确,因为我不确定这被称为什么)。
8个回答

76

可能有更简单的选项,但是您可以使用VLOOKUP来检查一个值是否出现在列表中(而且VLOOKUP本身是一个强大的公式,值得掌握)。

因此,对于A1,您可以使用以下公式设置条件格式:

=NOT(ISNA(VLOOKUP(A1,$B:$B,1,FALSE)))

复制并粘贴特殊格式:将条件格式复制到A列中的其他单元格。

上述公式的作用:

  • VLOOKUP正在根据第一参数(单元格A1的值)查找整个B列($B:$B),在第一列中查找(这是第三个参数,在此无效,但通常VLOOKUP会查找表而不是列)。最后一个参数FALSE指定匹配必须是精确的而不仅仅是最接近的匹配。
  • 如果未找到匹配项,则VLOOKUP将返回#ISNA,因此NOT(ISNA(...))对于所有在列B中具有匹配项的单元格返回true。

1
嗨,大卫, 这个完美地解决了,谢谢!只是想再次感谢你解释公式的含义,这对我将来会有很大帮助。顺祝商祺, 凯尔 - Izion
2
不客气。公平地说,我认为克里斯·尼尔森的方法(我已经点赞了)也可以运行,并且可能更加优雅。 - David
我对这个答案获得的赞数感到困惑。@chrisneilsen的回答更简单。除此之外,INDEX/MATCH在所有方面都比VLOOKUP好。它可以完全做到相同的事情,但更好。它更快,更多功能(您可以查找左侧的值),更可靠(插入列不会破坏它),更易于使用(您不必计算列)。VLOOKUP是从Lotus-123继承而来的过时函数 - http://www.excel-vba.com/excel-formula-vlookup.htm - Gravitate

30

一个简单的公式可以使用

=COUNTIF($B:$B,A1)

该公式适用于单元格A1。只需将其复制并粘贴特殊格式到整个A列即可。


6
注意:在执行以下步骤之前,您可能需要删除重复项(例如同一列中的重复条目),以防止误报。
1.选择这两列。 2.点击条件格式设置。 3.点击突出显示单元格规则。 4.点击重复值(默认应该是OK)。 5.现在,重复项会用红色突出显示。
图片示例:enter image description hereenter image description here

1
这非常快速和简单(+1),但有一个注意事项:如果在同一列中存在重复数据,即使这些值在另一列中不存在,它也会将它们突出显示。这意味着可能会有一些误报。另一方面,如果同一列中没有重复数据,则这似乎是最好的选择。当然,在使用此功能突出显示重复单元格之前,您可以删除同一列中的重复项(选择该列,数据->删除重复项)。 - Fabio says Reinstate Monica

4
最简单的方法,至少对我来说,是:
条件格式 -> 添加新规则 -> 设置您自己的公式:
=ISNA(MATCH(A2;$B:$B;0))

A2是A列中要进行比较的第一个元素,B是要搜索A元素的列。

设置公式并选择格式后,将此规则应用于该列中的所有元素。

希望这有所帮助。


2
假设您想在同一张电子表格中比较A列和H列。
您需要在这两列旁边的另一列中粘贴以下公式: =(Sheet1!A:A=Sheet1!H:H) 这将在该列中显示FALSE或TRUE。因此,您可以使用此新列使用条件格式化功能来着色不匹配的值。

2

A1 --> 条件格式化 --> 单元格值为B1 --> 格式化:任意你想要的样式

希望这有所帮助。


1
我试图比较A-B列并突出显示相同的文本,但使用上述公式时,有些文本根本不匹配。因此,我使用了表单(VBA宏来比较两个列并突出显示单元格差异)代码,并修改了一些内容以适应我的应用程序,并查找任何所需的列(只需点击它)。在我的情况下,我在每个列上使用大量且不同的行。希望这可以帮助您:

子ABTextCompare()

Dim Report As Worksheet
Dim i, j, colNum, vMatch As Integer
Dim lastRowA, lastRowB, lastRow, lastColumn As Integer
Dim ColumnUsage As String
Dim colA, colB, colC As String
Dim A, B, C As Variant

Set Report = Excel.ActiveSheet
vMatch = 1

'Select A and B Columns to compare
On Error Resume Next
 Set A = Application.InputBox(Prompt:="Select column to compare", Title:="Column A", Type:=8)
  If A Is Nothing Then Exit Sub
colA = Split(A(1).Address(1, 0), "$")(0)
 Set B = Application.InputBox(Prompt:="Select column being searched", Title:="Column B", Type:=8)
   If A Is Nothing Then Exit Sub
  colB = Split(B(1).Address(1, 0), "$")(0)
 'Select Column to show results
 Set C = Application.InputBox("Select column  to show results", "Results", Type:=8)
    If C Is Nothing Then Exit Sub
  colC = Split(C(1).Address(1, 0), "$")(0)

'Get Last Row
lastRowA = Report.Cells.Find("", Range(colA & 1), xlFormulas, xlByRows, xlPrevious).Row - 1 ' Last row in column A
lastRowB = Report.Cells.Find("", Range(colB & 1), xlFormulas, xlByRows, xlPrevious).Row - 1 ' Last row in column B

 Application.ScreenUpdating = False
'***************************************************
For i = 2 To lastRowA
      For j = 2 To lastRowB
          If Report.Cells(i, A.Column).Value <> "" Then
              If InStr(1, Report.Cells(j, B.Column).Value, Report.Cells(i, A.Column).Value, vbTextCompare) > 0 Then
                  vMatch = vMatch + 1
                  Report.Cells(i, A.Column).Interior.ColorIndex = 35 'Light green background
                  Range(colC & 1).Value = "Items Found"
                  Report.Cells(i, A.Column).Copy Destination:=Range(colC & vMatch)
                  Exit For
              Else
                  'Do Nothing
              End If
          End If
      Next j
  Next i
If vMatch = 1 Then
    MsgBox Prompt:="No Itmes Found", Buttons:=vbInformation
End If
'***************************************************
Application.ScreenUpdating = True

End Sub


-2

不想做太多工作,大家... 只需按下Ctrl键并选择第一列,再按下Ctrl键并选择第二列。 然后点击条件格式->突出显示单元格规则->等于。

就这样。完成了。:)


1
那不是对所提出问题的回答。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接