ArrayFormula数组公式计算瀑布式佣金IF逻辑异常问题
问题根因
你遇到的营收低于5万返回300的问题,优先排查两个点:
- 确认参数表
'Water Fall Commission Scale '的$I$2单元格值是否为50000:如果I2误填为40000,4万5万区间的营收计算结果就刚好是0300,和你描述的错误输出完全匹配 - 检查E列营收单元格是否为纯数值格式,排除带单位、不可见字符导致的计算逻辑异常
优化后可用数组公式
你原公式嵌套逻辑冗余,直接用MAX+MIN组合简化后更不容易出错,以下是两个可用版本:
版本1:参数硬写(适配逻辑固定的场景)
=ArrayFormula(IF(E2:E="","", MIN(1500, MAX(0, (E2:E - 50000)*0.03))))
版本2:保留参数表引用(适配规则可调整的场景)
=ArrayFormula(IF(E2:E="","", MIN( 'Water Fall Commission Scale'!$J$3 * 'Water Fall Commission Scale'!$J$4, MAX( 0, (E2:E - 'Water Fall Commission Scale'!$I$2) * 'Water Fall Commission Scale'!$J$4 ) ) ))
逻辑说明
- 内层
MAX(0, (营收-5万)*3%):直接覆盖≤5万返回0,5万以上返回超额部分3%的规则 - 外层
MIN(1500, 上一步计算结果):直接覆盖≥10万封顶1500的规则((10万-5万)*3%刚好等于1500,超出部分取最小值即可实现封顶)
内容的提问来源于stack exchange,提问作者Blais Walker
相关产品推荐
相关产品推荐

