Excel比较两列并在找到时突出显示

时间:2012-04-04 09:45:38

标签: excel

我在列A中有一个包含10,000行的Excel文件,但有些值是相同的。

示例:

A1 - P7767

A2 - P3443

A3 - P7767

A4 - P8746

A5 - P9435

等...

然后我有另一列有100行,其中包含在A列中找到的一些值,

B1 - P7767

B2 - P8746

等...

我需要突出显示A列中的所有单元格,其中的值可以在B列的任何值中找到

因此,基本上B列检查它是否可以在A列中的任何位置找到相同的值,如果为true,则突出显示单元格,当在B列中找不到该值时,将任何单元格保留为白色

我希望我已经很好地解释了这一点,我做了一些研究,我相信我需要使用条件格式来获得这个结果,但我真的坚持使用的公式,似乎无法在网上找到一个例子(也许我我没有搜索正确的术语,因为我不确定这究竟是什么名称)

8 个答案:

答案 0 :(得分:75)

可能有一个更简单的选项,但你可以使用VLOOKUP来检查一个值是否出现在列表中(并且VLOOKUP是一个强大的公式,无论如何都要掌握)。

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

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

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

上述公式正在做什么:

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

答案 1 :(得分:30)

使用的简单公式是

=COUNTIF($B:$B,A1)

指定的公式适用于单元格A1。只需将特殊格式复制并粘贴到整个A列

即可

答案 2 :(得分:5)

注意:在执行这些步骤之前,您可能希望删除重复项(例如,同一列中的重复条目)以防止误报。

  1. 选择两列
  2. 点击“条件格式”
  3. 单击“突出显示单元格规则”
  4. 单击“重复值”(默认值应该没问题)
  5. 重复项现在以红色突出显示:
  6. enter image description here

答案 3 :(得分:3)

至少对我来说,最简单的方法是:

条件格式 - >添加新规则 - >设置您自己的公式:

=ISNA(MATCH(A2;$B:$B;0))

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

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

希望这有帮助

答案 4 :(得分:2)

A1 - >条件格式 - >单元格值是B1 - >格式:无论你想要什么

希望有所帮助

答案 5 :(得分:2)

假设您要在同一电子表格中比较A列和H列。

您需要在这两列旁边添加另一列并粘贴此公式:     =(Sheet 1中一个:!A = Sheet 1中H:1H)   这将在列中显示FALSE或TRUE。因此,您可以使用此新列使用条件颜色格式化功能为非匹配值着色。

答案 6 :(得分:1)

我试图比较A-B列并突出显示相同的文本,但是使用了一些文本根本不匹配的对象fomrulas。所以我使用了form(VBA macro to compare two columns and color highlight cell differences)代码,我修改了一些东西以使其适应我的应用程序并找到任何所需的列(只需单击它)。在我的例子中,我在每列上使用大量不同的行。希望这会有所帮助:

Sub 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

答案 7 :(得分:-1)

不要做太多的工作。 只需按Ctr并选择Colum one并按Ctr并选择colum two。 然后单击条件格式 - &gt;突出显示单元格规则 - &gt;等于。

就是这样。你做完了:)