WEBI中如何计算含变动利润率的最终汇总金额?
解决带变动利润率的发票总计计算问题
问题背景
客户在特定月份有多张发票,需计算最终金额(净金额总计+对应利润率),但利润率随期间变动:
- 2022年1-2月:利润率0%
- 2022年3-6月:利润率4.5%
- 其他情况:利润率10%
目前在表格中能得到目标结果7142,76,但单个单元格公式返回#MULTIVALUE错误。现有公式:
- 利润率变量
vMargin:=If([Doc Year]="2022" And [Doc Period]>=1 And [Doc Period]<=2) Then 0 Else If ([Doc Year]="2022" And [Doc Period]>2 And [Doc Period]<7) Then 4.5 Else 10 - 净金额总和(已得到6835,18):
=Sum([Term Invoice Line Net Amount] ForAll ([Customer];[Doc Year];[Doc Period];[vMargin]))
解决方案
问题出在直接汇总时未按期间维度先计算单期间的“净金额×(1+利润率)”,再累加。使用以下单个单元格公式即可得到正确结果:
=Sum( [Term Invoice Line Net Amount] * (1 + [vMargin]/100) ForAll ([Customer];[Doc Year];[Doc Period]) )
原理说明
- 先对每一行发票计算单张发票的最终金额:
[Term Invoice Line Net Amount] * (1 + [vMargin]/100),将利润率转换为系数(比如4.5%对应1.045) - 按
Customer、Doc Year、Doc Period维度汇总(vMargin由Doc Year和Doc Period决定,无需单独放在ForAll参数里) - 避免
#MULTIVALUE错误:每个维度组内的利润率唯一,不会产生多值冲突
内容的提问来源于stack exchange,提问作者bekart
相关产品推荐
相关产品推荐

