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

我在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是这些阈值的不同佣金率。

我有一个testing用例的公式,但是当我尝试将variables分解到单元格引用和范围中时,它会失败并返回#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}) 

然后,它的作品…

它也适用于我所有的参数都是命名参考的testing案例:

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

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

谁能开导我吗?

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

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

谢谢。

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

您可以通过向您的公式添加一个Transpose来解决此问题

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

您也可以使用MMULT函数来避免“数组input”,即

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