dynamic生成数组

是否有可能通过比较两个数组/范围,并在不使用VBA的情况下查找匹配,在Excel函数中dynamic生成布尔或1/0数组?

我有一个带有索引的单元格范围,比如A1:A10中的值1到10。

那么另一个范围C13:C15包含值3,6,7。 有没有办法比较A1:A10和C13:C15来产生下面的数组,其中有十个元素:{0,0,1,0,0,1,1,0,0,0}用于sumproduct函数? 然后拖动这个比较不同的范围到索引。

你可以使用logical_test函数来返回一个数组,这取决于你想用什么逻辑来获得你的1或0

看下面的例子:

在这里输入图像说明

根据您的单元格区域,以下数组公式会返回{0;0;1;0;0;1;1;0;0;0}

 = MMULT((A1:A10=TRANSPOSE(C13:C15))+0,((((C13:C15)=0)+1)>0)+0) 

除了它返回一个垂直数组而不是水平数组之外,这和你的问题是一样的。 如果你想返回一个水平数组,只需用TRANSPOSE将上面的整个公式括起来。 (即= TRANSPOSE(<formula shown above>)

注意这是一个数组公式,所以你必须在键盘上按下Ctrl + Shift + Enter键 ,而不是在input这个公式后input。

尝试

 =SIGN(COUNTIF(C13:C15,A1:A10)) 

如果数字只在C13:C15中出现一次,则不需要该符号。

所以,通常情况下,这将在您所说的SUMPRODUCT的背景下进行

 =SUMPRODUCT(SIGN(COUNTIF(C13:C15,A1:A10)))