Excel中实现品牌变更重置、重现续算的累计求和公式
两种咖啡价格累计求和的实现方案
针对你提到的tblCoffee表格(记录咖啡品牌与价格),将原有的两种累计计数逻辑转换为求和逻辑的具体公式如下:
1. 品牌变更时重置累计求和(对应原D列计数逻辑)
原逻辑是品牌与上一行不同时重置计数序列,转换为求和后,需要累计当前连续同品牌行的价格,品牌切换时重新开始计算。使用SCAN函数实现:
=SCAN(0, HSTACK(tblCoffee[Price], tblCoffee[Brand]=DROP(VSTACK("",tblCoffee[Brand]),-1)), LAMBDA(acc, pair, IF(INDEX(pair,2), acc+INDEX(pair,1), INDEX(pair,1)) ) )
逻辑说明:
DROP(VSTACK("",tblCoffee[Brand]),-1)生成与当前行品牌对比的"上一行品牌"数组,通过tblCoffee[Brand]=...得到布尔值数组(相同为TRUE,不同为FALSE)SCAN遍历每一行的价格和品牌对比结果:- 若品牌与上一行相同(
TRUE),则累加当前价格到累计值 - 若品牌不同(
FALSE),则重置累计值为当前价格
- 若品牌与上一行相同(
2. 品牌重现时续算累计求和(对应原G列计数逻辑)
原逻辑是统计每个品牌到当前行的出现次数,转换为求和后,需要计算当前品牌从第一行到当前行的所有价格总和,其他品牌不影响该品牌后续累加。使用MAP+SUMIFS实现:
=MAP(tblCoffee[Brand], tblCoffee[Price], LAMBDA(current_brand, current_price, SUMIFS(INDEX(tblCoffee[Price],1):current_price, INDEX(tblCoffee[Brand],1):current_brand, current_brand) ) )
逻辑说明:
MAP遍历每一行的品牌和价格INDEX(tblCoffee[Price],1):current_price锁定求和范围为从第一行到当前行的价格列SUMIFS筛选出该范围内品牌与当前行相同的所有价格,求和得到该品牌到当前行的累计总价
内容的提问来源于stack exchange,提问作者Statto
相关产品推荐
相关产品推荐

