【问题标题】:How to convert an "enumerate" to array如何将“枚举”转换为数组
【发布时间】:2021-03-10 20:25:33
【问题描述】:

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

长度为 n 的数组 a 存在于工作表中。 b 的值虽然不直接存在。 要获得 b,需要有一列数据和 n 个索引。 b[i] = 数据[索引[i]]

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

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

sample

【问题讨论】:

    标签: excel excel-formula array-formulas


    【解决方案1】:

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

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

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

    【讨论】:

    • Tom,问题..这仅与 O365 之前的版本相关吗?我刚刚使用了=SUM(D3:D4*INDEX(A2:A10,B2:B3)),它奏效了。我想这实际上只是 O365 阵列开始工作。我没有旧版本可以尝试。顺便说一句,here 是一本有趣的书。巧妙的技巧 =)
    • 据我所知,您必须在 O365 之前的所有版本中执行此操作 - 我使用的是 Excel 2019。阅读参考资料很有趣 - EXCELXOR 的原始文章早在 2014 年,但我有不知道他们一开始是怎么发现这个把戏的。
    • @TomSharpe 我所见过的对这种技术的最早描述是由已故的 Laurent Longre(他为 Excel 编写了旧的 Morefunc 插件)在 00 的中期提出的。跨度>
    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多