2012-02-19 63 views
0

我在Excel中有一个问题,我似乎无法解决:Excel - 为什么SUMPRODUCT()函数返回#VALUE!当我使用范围或命名范围而不是数组常量?

我正在使用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!

例如当我使用以下公式失败:

=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

感谢。

+0

我工作出了什么问题 - 大部分数据都是水平数组,但佣金百分比是垂直数组 - 我没有意识到不同定向的数组不能在SUMPRODUCT()函数中混合使用...... – Diggory 2012-02-19 18:18:38

回答

1

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

您可以解决这个问题,通过增加Transpose到您的公式

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

您还可以使用MMULT功能,避免“阵列项”,即

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

+0

+1表示减小的公式大小 – brettdj 2012-03-02 01:10:38