不使用数组公式或 VBA 从两列中提取唯一值列表

不使用数组公式或 VBA 从两列中提取唯一值列表

我有两列数据,A 和 B。我想合并这些列,以便只有唯一值包含在最终列表中。目前,我正在使用数组公式https://www.get-digital-help.com/2009/06/16/extract-an-unique-distinct-list-from-two-columns-using-excel-2007-array-formula/

{=IFERROR(IFERROR(INDEX($A$2:$A$20, MATCH(0, COUNTIF($C$1:C1, $A$2:$A$20), 0)), INDEX($B$2:$B$7, MATCH(0, COUNTIF($C$1:C1, $B$2:$B$7), 0))), "")} 

虽然这种方法效果很好,但我想尽可能避免使用数组公式,因为它们会严重降低我们本来就很差劲的 PC 的速度。由于某些原因,我们也无法使用 VBA,所以这也不是一个选择。

有什么办法可以做到这一点?

答案1

好吧,我找到了一种方法,目前看来可行,但肯定不太好。

A 列有一组数据,总共 200 个值。

B 列有第二组数据,比如说 175 个值。

C 列检查 B 列中的值是否存在于 A 列中

 =IF(COUNTIF($A$2:$A$750,B2)>0,"Match","No Match")

E 列有一个计数,用于跟踪我们相对于 A 列数据集末尾的位置

=IF(A2=0,MAX($E$1:E1)+1,"")

每当 C 列指示唯一值时,F 列的计数就会递增

=IF(C2="No Match",MAX($F$1:F1)+1,"")

G 列是两组数据的组合。首先,它列出 A 中的值。一旦到达列表末尾并开始查找 0,它就会使用在 E 列中创建的索引来查找 B 中的第一个唯一值并递增,直到达到最终值。

=IF(A2=0,IF(E2>MAX(F:F),"",INDEX(B:B,MATCH(E2,F:F))),A2)

答案2

关于如何提取唯一值和不同值,有一个很好的讨论这个 Excel 教程网站

您的问题的答案是肯定的,它只是涉及为每个部分使用额外的 INDEX()。以下是修改内容:

=IFERROR(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($C$1:C1,$A$2:$A$20),0),0)),INDEX($B$2:$B$7,MATCH(0,INDEX(COUNTIF($C$1:C1,$B$2:$B$7),0),0)))

我省略了最外层的 IFERROR()。希望这能有所帮助。

相关内容