【问题标题】:Excel error when multiplying two arrays将两个数组相乘时出现Excel错误
【发布时间】:2014-11-18 03:50:26
【问题描述】:

我正在尝试将两个数组相乘,但出现 #Value 错误。

只是对表中内容的简要说明:

E列作为一个布尔数组,基于末尾特定字符串的存在

列 D 用于查找同一组 ID 所在的列 A

最后,B列包含基于从E列导出的布尔向量要添加的数量

逐步(使用 F9)所有部分都正确计算,但整个公式没有。

A   B     C     D   E      
ID  Amounts     ID  Code
9   100         1   PT91
8   2000        2   PT92
7   3000        3   PT93
66  4000        4   PT94
5   5000        5   PT95
4   5000        66  PT96
3   5000        7   PT97
2   5000        8   PT93
1   5000        9   PT99

给出错误的公式是:

{=MMULT(TRANSPOSE(IF(RIGHT(E3:E11,2)="93",1,0)),OFFSET(B2,MATCH(D3:D11,A3:A11,0),0)) }

预期结果是 7000

非常感谢

西蒙娜

【问题讨论】:

    标签: arrays excel


    【解决方案1】:

    您需要首先“取消引用”来自 OFFSET 的返回(它可以同样返回单元格 references 以及单元格 values,具体取决于所涉及的构造),为此N 在这里是一个合适的函数,即:

    =MMULT(TRANSPOSE(IF(RIGHT(E3:E11,2)="93",1,0)),N(OFFSET(B2,MATCH(D3:D11,A3:A11,0),0)))
    

    您还可以使用更短、非易失性和非数组来获得相同的结果:

    =SUMPRODUCT(0+(RIGHT(E3:E11,2)="93"),SUMIF(A3:A11,D3:D11,B3:B11))
    

    问候

    【讨论】:

    • 非常感谢,非向量公式对我也很有用。
    • 不客气。很高兴看到正确使用 MMULT 进行更改的构造:-),尽管它可能不是这里最有效的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多