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})
但是,如果它不是太麻烦,我宁愿使用本机功能来做这件事......
那么,简单的问题; 可以构造一个数组公式来做我想要的事情吗?
谢谢偷看!
如果第二个数组是第一个数组的子集,顺序相同,并且从位置 1 开始,那么您可以使用此数组公式进行等价测试:
=IFERROR(IF({1,2,3,4,5}={1,2},TRUE),FALSE)
Run Code Online (Sandbox Code Playgroud)
对于不等价只需交换FALSE
andTRUE
=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