如何将 "enumerate" 转换为数组

How to convert an "enumerate" to array

我正在尝试计算 sum(a.*b) = a[1] * b[1] + a[2] * b[2]+.....

sheet 中存在长度为 n 的数组 a。但是 b 的值并不直接存在。 得到b,有一列数据和n个索引。 b[i] = 数据[索引[i]]

找到 sum(a.*b) 的一种方法是首先使用 INDEX(data, indexes) 缓冲 b 的值,然后使用 SUM(a * b)。 我希望它在没有缓冲的情况下在一个单元格中完成。所以我尝试将 b 替换为 b 的公式,如 SUM(a * INDEX(data, indexes))。但是 excel 认为 INDEX(data, indexes) 是可迭代的并给了我 [SUM(a * b[1]), SUM(a * b[2]), ...]

如何告诉 excel 将 INDEX(data, indexes) 作为数组?

sample

在 Excel 的早期版本(O365 之前)中,您必须使用以下操作来使用索引 as described here 传递数组:

=SUMPRODUCT(D3:D4*INDEX(A2:A10,N(IF({1},B2:B3))))

1 {1} 周围的大括号并不是绝对必要的,但我倾向于将它们留在里面以表示我正在使用此技巧。