VBA查找两个列表的相同和不同条目

时间:2016-09-05 08:04:35

标签: excel vba performance excel-vba comparison

我开始的将是两个列表,如下所示:

列表1

Roger | 1.81 | ...
Amy   | 1.66 | ...
Tom   | 1.85 | ...
Peter | 1.32 | ...
Karen | 1.20 | ...
Lukas | 1.76 | ...

列表2

Josef | 2.02 | ...
Lukas | 1.76 | ...
Amy   | 1.66 | ...
Carl  | 1.72 | ...
Roger | 1.81 | ...

|表示同一行中的新列。

最终我想要的是什么:

相同的

Roger | 1.81 | ...
Amy   | 1.66 | ...
Lukas | 1.76 | ...

1但不是2

Karen | 1.20 | ...
Peter | 1.32 | ...
Tom   | 1.85 | ...

2但不是1

Carl  | 1.72 | ...
Josef | 2.02 | ...

条目的顺序无关紧要。

我无法相信这不是在Excel中原生实现的。我一直需要这个工作,并且必须愚蠢地遍历VBA中两个列表的每个条目,这需要花费一些时间来进行数千个条目(tαn* m)。当然必须有一种更优雅的方式。

1 个答案:

答案 0 :(得分:2)

使用A1:A6和B1:B6中的数据,其中A是列表A,B是列表B,使用数组公式将为您提供" native"在Excel中执行此操作的方法。

这将为您提供A(在A和B中)标准的行号,您可以将其与其他人混淆。在C1中使用并向下拖动公式以获得结果。

=SMALL(IF(COUNTIF($B$1:$B$6,$A$1:$A$6)>0,ROW($A$1:$A$6)),ROWS($C$1:$C1))