我正在尝试计算sum(a。* b)= a [1] * b [1] + a [2] * b [2] + ..
在工作表中存在长度为n的数组a。但是,b的值并不直接存在。为了得到b,有一列数据和n个索引。b [i] =数据[索引[i]]
查找sum(a。* b)的一种方法是,首先使用INDEX(data,indexs)缓冲b的值,然后使用SUM(a * b)进行缓冲。我希望它在没有缓冲的一个单元中完成。所以我尝试用像SUM(a * INDEX(data,indexs))这样的b公式替换b。但是excel认为INDEX(data,indexs)是可迭代的,并给了我[SUM(a * b [1]),SUM(a * b [2]),...]
如何告诉excel将INDEX(数据,索引)当作数组?
在早期版本的Excel(PRE-O365),你必须使用以下机动交付使用索引数组如下描述:
=SUMPRODUCT(D3:D4*INDEX(A2:A10,N(IF({1},B2:B3))))
1 {1}周围的花括号不是严格必需的,但是我倾向于将它们放在一边以表示我正在使用此技巧。
汤姆,问题..这仅与O365之前的版本相关吗?我只是用过
=SUM(D3:D4*INDEX(A2:A10,B2:B3))
,它起作用了。我想这实际上只是O365阵列正在发挥作用。我没有较旧的版本可以尝试。顺便说一句,这是一个有趣的阅读实例。整洁的把戏=)据我所知,您必须在O365之前的所有版本中都执行此操作-我正在使用Excel2019。有趣的是阅读参考资料-EXCELXOR的原始文章可以追溯到2014年,但我不知道他们是如何发现该技巧的。第一名。
@TomSharpe我所见过的最早的技术描述是在上半叶由已故的Laurent Longre(他为Excel编写了旧的Morefunc Add-in)
00
。