如何比较两列并在Excel中找到差异?


45

我在Excel中有两列想要比较并找出它们之间的差异。

假设:

  • A栏有50个数字,即0511234567
  • B列有100个相同格式的数字

我认为可以使用Excel的内置函数和公式来完成此操作。在我看来似乎没有话题。
马特·汉迪

您能指定该怎么做吗?

那么,您是否想知道哪些数字仅在Col A中,哪些数字仅在Col B中?
汤姆·肖


不,首先我想知道所有不在Col A中但在Col B中的数字,然后我想知道所有在Col A中但不在Col B中的数字。–

Answers:


55

使用条件格式

选中列一个。单击条件格式 > 创建新规则 > 使用此公式来确定要格式化的单元格 >输入ff。式:

=countif($B:$B, $A1)

单击格式按钮,然后将字体颜色更改为所需的颜色。

B列重复相同的操作,只是使用此公式并尝试使用另一种字体颜色。

=countif($A:$A, $B1)

使用单独的列

C列中,输入ff。公式放入第一个单元格,然后将其复制下来。

=if(countif($B:$B, $A1)<>0, "-", "Not in B")

D列中,输入ff。公式放入第一个单元格,然后将其复制下来。

=if(countif($A:$A, $B1)<>0, "-", "Not in A")

这两个都应帮助您可视化另一列中缺少的项目。


测试了哪个版本的Excel?
彼得·莫滕森

1
“条件格式”在哪里?在菜单上?在上下文菜单中?
彼得·莫滕森

在OpenOffice的较旧版本中(对应于功能区前的Excel)(毕竟它是Excel的一个克隆),存在菜单命令Format- > Conditional Formatting
彼得·莫滕森

1
这是关于Excel的,但是在OpenOffice / LibreOffice中使用$B:$B引用整个列B是行不通的。而是使用$B$1:$B$1048576(其中1048576是编号最高的行)。注意$在数字前面(所谓的绝对引用)-这使其可以像Fill Down(在此处称为“复制下来”)或Fill Up这样的操作按预期工作。
彼得·莫滕森

14

Microsoft有一篇文章详细介绍了如何在两列中查找重复项。可以轻松地对其进行更改,以在每列中找到唯一的项目。

例如,如果您希望Col C显示Col A唯一的条目,而Col D显示Col B唯一的条目:

A   B   C                                          D
1   3   =IF(ISERROR(MATCH(A1,$B$1:$B$5,0)),A1,"")  =IF(ISERROR(MATCH(B1,$A$1:$A$5,0)),B1,"")
2   5   (fill down)                                (fill down)
3   8   ..                                         ..
4   2   ..                                         ..
5   0   ..                                         ..


4

假设您要在col中找到那些。B在col中没有匹配项。A.放在C2中:

=COUNTIF($A$2:$A$26;B2)

如果有匹配项,这将为您提供1(或更多),否则为0。

您也可以分别对两列进行排序,然后选择两者,转到“特殊”,选择“行差异”。但这将在第一个新项目之后停止工作,您将必须插入一个单元格,然后重新开始。


4

如果我很了解您的问题:

=if(Ax = Bx; True_directive ; False_directive)

用函数或“ Equal”或“ different”之类的字符串替换True / false伪指令。


@pasta如果两列的排序方式不同,则将无法正常工作-我认为问题不关乎。
SIslam '16

3

这取决于您的单元格的格式和功能要求。以“ 0”开头可以将它们格式化为文本。

然后,您可以使用IF函数在Excel中比较单元格:

=IF ( logical_test, value_if_true, value_if_false )

例:

=IF ( A1<>A2, "not equal", "equal" )

如果将它们格式化为数字,则可以从另一列中减去第一列以获得差值:

=A1-A2

2

此公式将直接比较两个单元格。如果它们相同,则将打印True;如果存在差异,则将打印False。此公式将不会打印出差异。

=IF(A1=B1,"True","False")

1

我使用的是Excel 2010,只需突出显示要比较的两组值的两列,然后单击Excel主页上的“条件格式”下拉列表,选择“突出显示单元格”规则,然后选择差异。然后提示您突出显示差异或相似之处,并询问您要使用哪种颜色突出显示...


0

可以使用Excel VBA代码进行比较。可以使用Excel VBA Worksheet.Countif函数进行比较过程。

在此模板中比较了不同工作表上的两列。当将整个行复制到第二个工作表时,发现不同的结果。

码:

Dim stk, msb As Worksheet
Set stk = Sheets("Page1")
Set msb = Sheets("Page2")

Application.ScreenUpdating = False
sat = (msb.Range("A" & Rows.Count).End(xlUp).Row) + 1
For i = 2 To stk.Range("A" & Rows.Count).End(xlUp).Row
    If WorksheetFunction.CountIf(msb.Range("A2:A" & msb.Range("A" & Rows.Count).End(xlUp).Row), stk.Cells(i, "A")) = 0 Then
        msb.Range("a" & sat).EntireRow.Value = stk.Range("a" & i).EntireRow.Value
        msb.Range("a" & sat).Interior.ColorIndex = 22
        sat = sat + 1
    End If
Next
...

教程的视频:https : //www.youtube.com/watch?v=Vt4_hEPsKt8

示例文件可以在这里下载


1
如果您要链接到博客和YouTube频道,则必须披露您的隶属关系。如果您不这样做,则可能被指控为垃圾邮件。
DavidPostill

0

这正在使用另一种工具,但是我发现这很容易做到。使用记事本++:

在Excel中,请确保您的2列以相同的顺序排序,然后将您的列复制并粘贴到2个新的文本文件中,然后运行比较(从“插件”菜单中)。


0

不匹配功能组合效果很好。以下工作也可以:

= IFISERRORVLOOKUP(<< 较大列表中的项目 >>,<< 较小列表 >>,1FALSE)),<< 较大列表中的项目 >>,“”)

记住:较小的列表必须按升序排列-vlookup的要求

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.