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

VBA查找两个列表中相同和不同的条目,vba,performance,excel,comparison,Vba,Performance,Excel,Comparison,我首先会列出两个类似的列表: 列表1 Roger | 1.81 | ... Amy | 1.66 | ... Tom | 1.85 | ... Peter | 1.32 | ... Karen | 1.20 | ... Lukas | 1.76 | ... Carl | 1.72 | ... Josef | 2.02 | ... 列表2 Josef | 2.02 | ... Lukas | 1.76 | ... Amy | 1.66 | ... Carl | 1.72 | .

我首先会列出两个类似的列表:

列表1

Roger | 1.81 | ...
Amy   | 1.66 | ...
Tom   | 1.85 | ...
Peter | 1.32 | ...
Karen | 1.20 | ...
Lukas | 1.76 | ...
Carl  | 1.72 | ...
Josef | 2.02 | ...
列表2

Josef | 2.02 | ...
Lukas | 1.76 | ...
Amy   | 1.66 | ...
Carl  | 1.72 | ...
Roger | 1.81 | ...
Karen | 1.20 | ...
Peter | 1.32 | ...
Tom   | 1.85 | ...
其中
|
表示同一行中的新列


我到底想要什么:

相同

Roger | 1.81 | ...
Amy   | 1.66 | ...
Lukas | 1.76 | ...
在1而不是2中

Josef | 2.02 | ...
Lukas | 1.76 | ...
Amy   | 1.66 | ...
Carl  | 1.72 | ...
Roger | 1.81 | ...
Karen | 1.20 | ...
Peter | 1.32 | ...
Tom   | 1.85 | ...
在2而不是1中

Roger | 1.81 | ...
Amy   | 1.66 | ...
Tom   | 1.85 | ...
Peter | 1.32 | ...
Karen | 1.20 | ...
Lukas | 1.76 | ...
Carl  | 1.72 | ...
Josef | 2.02 | ...
其中条目的顺序无关紧要



我不敢相信这不是在Excel中本机实现的。我在工作中一直需要这个,不得不愚蠢地在VBA中遍历两个列表中的每个条目,这需要花费一些时间来处理上千个条目(t∝ n*m)。肯定有更优雅的方法。

使用A1:A6和B1:B6中的数据,其中a是列表a,B是列表B,使用数组公式将为您提供在Excel中执行此操作的“本机”方法

这将为您提供(在A和B中)条件的A行号,您可以将其他条件的行号弄乱。在C1中使用并向下拖动公式以获得结果


=SMALL(如果(COUNTIF($B$1:$B$6,$A$1:$A$6)>0,行($A$1:$A$6)),行($C$1:$C1))

谢谢您的回答!我将代码翻译成德语(用“;”代替“,”),更改了语言设置,并使用了原始代码。两个都没有用。没有打字错误吗?等效的VBA代码是什么?顺便说一句,我想表示的是,列表有不止一列。您是以数组公式CTRL+SHIFT+enter的形式输入的吗?我是按原样输入的。我现在确实在单元格中复制了它,并按了CTRL+SHIFT+ENTER,但我不明白这应该做什么。无论如何,你能给出VBA的等效值吗,因为这就是我要使用它的方式;而且,对那些喜欢excel的人来说,没有冒犯的意思,最好是实施(如果它对你有效,对我也有效)。