我这样做的原因是,我不必使用矩阵乘法,而可以使用和积。我可以用矩阵乘法来做这件事,但是我不想给我的同事解释这是什么以及如何去做。我需要对两个数组应用一个标量,并对其应用和积。问题是,由于标量长度为1,它打破了和积公式。公式如下所示:
=sumproduct(1/sumif(conditionals), array 2, array 3)我想做的是根据其他两个数组的大小,缩放第一个数组,这是我的标量。我已经尝试过了,我认为这是行不通的,但它应该让我了解我想要实现的目标:
=sumproduct(rept(1/sumif(conditionals),count(array 2)), array 2, array 3)这里的问题是rept函数返回一个字符串,我无法使用rept()或任何其他公式将其转换为该标量的1xN数组。我应该指出,我并不是要强制转换变量,但是如果有这样的方法,它可能会解决问题。
有什么想法吗?
发布于 2013-11-20 21:27:58
你试过吗?
=sumproduct((1/sumif(conditionals))*'array 2'*'array 3')另外,这在数学上不是和
=(1/sumif(conditionals))*sumproduct('array 2','array 3')发布于 2013-11-20 21:35:58
下面的公式可以解决您的问题:
=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()函数中使用。
https://stackoverflow.com/questions/20105650
复制相似问题