如何在Excel中比较2个数组与不等数量的元素

Wil*_*ell 5 excel array-formulas

在Excel数组公式中,我想测试一个数组的每个元素对第二个数组的每个元素,当2个数组没有相同数量的元素时.向右简化,这种情况可以表示为:

= SUMPRODUCT({1,2,3,4,5} = {1,2})

注意 - 在我的真实场景中,这些数组是从各种先前步骤计算出来的.

使用上面的例子,我想要一个{TRUE,TRUE,FALSE,FALSE,FALSE}的结果.我得到的是{TRUE,TRUE,#N/A,#N/A,#N/A}.

很明显,当测试的值超过1时,Excel需要2个数组中相同数量的元素; 如果没有,#N/A错误填补空白.

我考虑过编写一个UDF来实现我想要的东西,而且我很确定我的编码技巧可以创建类似于:

= ArrayCompare({1,2,3,4,5}, "=",{1,2})

但是,如果它不是太麻烦,我宁愿使用本机功能来做这件事......

那么,简单的问题; 可以构造一个数组公式来做我想要的事情吗?

谢谢偷看!

cha*_*cea 1

如果第二个数组是第一个数组的子集,顺序相同,并且从位置 1 开始,那么您可以使用此数组公式进行等价测试:

=IFERROR(IF({1,2,3,4,5}={1,2},TRUE),FALSE)
Run Code Online (Sandbox Code Playgroud)

对于不等价只需交换FALSEandTRUE

=IFERROR(IF({1,2,3,4,5}={1,2},FALSE),TRUE)
Run Code Online (Sandbox Code Playgroud)

然后您可以在其他公式中将其用作数组:

在此输入图像描述

但是,如果数组不按顺序排列,如下例所示:

{1,2,3,4,5},{1,4,5}
Run Code Online (Sandbox Code Playgroud)

那么你必须使用MATCH. 然而,你所需要的只是用这样的方式包围比赛ISNUMBER

等价测试:

=ISNUMBER(MATCH({1,2,3,4,5},{1,4,5},0))
Run Code Online (Sandbox Code Playgroud)

非等价测试:

=NOT(ISNUMBER(MATCH({1,2,3,4,5},{1,4,5},0)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 请记住所有数组公式均使用ctrl+ shift+输入enter