谷歌表格中每行求和后按规则计算含折扣总价的实现方法
公式修改方案
你可以直接在原有求和逻辑的基础上叠加单价计算和折扣逻辑即可,修改后的数组公式如下:
={"Total Price";arrayformula(if(len(B2:B),let(sum_qty,mmult(n(B2:D),transpose(sign(column(B1:D1)))),sum_qty*2-if(mod(sum_qty,3)=0,0.5,0),))}
逻辑说明
- 保留了你原有的
MMULT逻辑计算每行B到D列的总瓶数,用LET函数把求和结果定义为sum_qty避免重复写计算逻辑,公式更简洁 - 先计算基础总价:总瓶数 * 2美元
- 用
MOD(sum_qty,3)=0判断总瓶数是否为3的倍数,符合条件就扣除0.5美元折扣,不满足则无抵扣 - 还是保持原有的数组公式特性,不需要手动下拉,会自动匹配所有B列有内容的行计算结果
兼容旧版谷歌表格方案
如果你使用的谷歌表格版本不支持LET函数,可以使用下面的版本:
={"Total Price";arrayformula(if(len(B2:B),mmult(n(B2:D),transpose(sign(column(B1:D1))))*2-if(mod(mmult(n(B2:D),transpose(sign(column(B1:D1)))),3)=0,0.5,0),))}
如果需要排除总瓶数为0时的误折扣,只需要把折扣判断的条件调整为mod(sum_qty,3)=0*sum_qty>0即可。
内容的提问来源于stack exchange,提问作者guy1733
相关产品推荐
相关产品推荐

