你可以在Excel中将标量转换为任意长度的数组

我这样做的原因是,我不必使用matrix乘法,而是可以使用sumproduct。 我可以用matrix乘法来做到这一点,但是我宁愿没有解释什么是什么以及如何去做我的同事的开销。 我需要将一个标量应用于两个我正在应用sumproduct的数组。 问题是,由于标量长度为1,所以打破了产品公式。 这是公式的样子:

=sumproduct(1/sumif(conditionals), array 2, array 3) 

我想要做的是扩展第一个数组,这是我的标量,基于其他2个数组的大小。 我已经尝试了这个,我认为这是行不通的,但它应该得到我想要完成的想法:

 =sumproduct(rept(1/sumif(conditionals),count(array 2)), array 2, array 3) 

这里的问题是,rept函数返回一个string,我无法使用round()或任何其他我可以想到的公式作为该标量的1xN数组。 我应该注意到我并不是一定要把这个variables抛出去,但是如果有办法这么做的话,它可能会解决这个问题。

有任何想法吗?

你有没有尝试过?

 =sumproduct((1/sumif(conditionals))*'array 2'*'array 3') 

另外,这不是math上的相同

 =(1/sumif(conditionals))*sumproduct('array 2','array 3') 

下面的公式可以解决你的问题:

 =SUMPRODUCT( ROW(INDIRECT("1:" & COUNT(array 2))) ^ 0 / SUMIF(conditionals), array 2, array 3 ) 

这工作如下:

首先获取数组2的元素个数:

 COUNT(array 2) 

然后将其转换为“虚拟”范围参考(仅限行):

 INDIRECT("1:" & COUNT(array 2)) 

然后确定这个虚拟范围参考的行号,结果是{1,2,...,COUNT}

 ROW(INDIRECT("1:" & COUNT(array 2))) 

最后,通过提高功率来转换行号0:

 ROW(INDIRECT("1:" & COUNT(array 2))) ^ 0 

这给你所需的数组{1,1,...,1}COUNT元素,可以在SUMPRODUCT()函数中使用。