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)