Excel - 为什么SUMPRODUCT()函数返回#VALUE!当我使用范围或命名范围而不是数组常量?

时间:2012-02-19 17:59:54

标签: excel excel-formula

我在Excel中遇到了一个我似乎无法解决的问题:

我正在使用SUMPRODUCT()函数来计算滑动比例佣金。通过阅读本页,我了解了它的基础知识:http://www.mcgimpsey.com/excel/variablerate.html 这说明我可以按照以下方式制定佣金:

=SUMPRODUCT(--(A1>$J$2:$J$5), (A1-$J$2:$J$5), $L$2:$L$5)

如果A1是总金额,J2:J5将是一系列阈值,L2:L5是这些阈值的不同佣金率。

我已经将公式用于单个测试用例,但是当我尝试将变量分解为单元格引用和范围时,它会失败并返回#VALUE!

e.g。我使用以下公式时失败:

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),commissionPercentages)

=SUMPRODUCT(--(D17>$C7:$E7),(D17-$C7:$E7), R11:R13 )

两者都指含有百分比的三个相邻细胞。

但是,如果我将百分比硬编码为数组常量:

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),{0.05,0.05,0.1})

然后它有用......

它也适用于我的测试用例,其中所有参数都被命名为引用:

=SUMPRODUCT(--(testRevenueAmount>thresholds),(testRevenueAmount-thresholds),commissionPercentages)

我不明白为什么会这样,以及我做错了什么。

有人能开导我吗?

如果您想查看我正在尝试的内容,我的电子表格有一个简化版本。

http://diggory.net/Grazing/CommissionSample.xlsx

感谢。

2 个答案:

答案 0 :(得分:3)

您还可以使用MMULT函数来避免“数组输入”,即

=MMULT((C17>$C7:$E7)*(C17-$C7:$E7),commissionPercentages)

答案 1 :(得分:1)

正如您所说,不同的方向是问题。

您可以通过在公式中添加Transpose来解决此问题

=SUMPRODUCT(--(C17>$C7:$E7),(C17-$C7:$E7),TRANSPOSE(commissionPercentages))