如何在Google Sheets中遍历区域,简化重复累加公式?
Google Sheets 简化遍历求和公式方案
直接用SUMPRODUCT就能实现批量遍历计算,不用重复写一堆IF语句,公式如下:
=SUMPRODUCT( --NOT(ISBLANK($B$2:$B$39)), OFFSET(Vitamins_data_start_offset, MATCH($E5, Vitamins_list, 0), MATCH($B$2:$B$39, Products_list, 0)), $C$2:$C$39/Product_weight )
公式说明:
--NOT(ISBLANK($B$2:$B$39)):把B列非空单元格转为1,空单元格转为0,实现空值过滤(对应原公式里IF(ISBLANK(X),0,...)的作用)OFFSET(...):MATCH($B$2:$B$39, Products_list,0)会返回一个数组,对应每个B单元格在产品列表中的位置,OFFSET自动生成对应的数据值数组$C$2:$C$39/Product_weight:直接取B列对应的C列数值,统一除以产品重量生成数值数组- SUMPRODUCT会自动将三个数组对应位置相乘后求和,完全替代原公式中一堆IF相加的逻辑
关于SUM+ARRAYFORMULA的可行写法:
如果你偏好这种组合,也可以用以下公式,和你想要的SUM_ALL逻辑完全一致:
=SUM(ARRAYFORMULA( IF(ISBLANK($B$2:$B$39),0, OFFSET(Vitamins_data_start_offset, MATCH($E5, Vitamins_list,0), MATCH($B$2:$B$39, Products_list,0))*$C$2:$C$39/Product_weight ) ))
之前没生效大概率是因为Vitamins_list或Products_list的区域引用有误,导致MATCH无法正常返回数组结果,核对一下引用范围即可。
内容的提问来源于stack exchange,提问作者Den
相关产品推荐
相关产品推荐

