如何将返回多结果的FILTER作为SUMIFS的条件使用?
如何将多结果FILTER作为SUMIFS条件实现求和
问题场景
需要实现:当Unit18StockData表的A列值匹配FILTER(Raw_LG!D:D, Raw_LG!H:H=B2)返回的任一结果时,对Unit18StockData表的D列对应值求和。
原尝试公式(无法正常工作):
=SUMIFS(Unit18StockData!D:D,Unit18StockData!A:A=UNIQUE(FILTER(Raw_LG!D:D,Raw_LG!H:H=B2)))
尝试过的ARRAYFORMULA(返回零或错误):
=ARRAYFORMULA(IF(Unit18StockData!A:A=UNIQUE(FILTER(Raw_LG!D:D,Raw_LG!H:H=B4)),Unit18StockData!D:D,0))
解决方法
核心问题是直接将多结果数组与单列区域做=对比时,只会匹配数组的第一个值,导致维度不匹配。以下两种方法可以实现需求:
方法1:SUM + IF + MATCH
=SUM(IF(ISNUMBER(MATCH(Unit18StockData!A:A, UNIQUE(FILTER(Raw_LG!D:D, Raw_LG!H:H=B2)), 0)), Unit18StockData!D:D, 0))
- 逻辑:用
MATCH检查Unit18StockData!A:A的值是否存在于FILTER返回的结果中,ISNUMBER将匹配结果转换为布尔值,最后用SUM累加符合条件的D列值。 - 注意:旧版Excel需按
Ctrl+Shift+Enter作为数组公式输入;新版Excel会自动识别数组公式。
方法2:SUMPRODUCT(无需数组公式输入)
=SUMPRODUCT(Unit18StockData!D:D, --ISNUMBER(MATCH(Unit18StockData!A:A, UNIQUE(FILTER(Raw_LG!D:D, Raw_LG!H:H=B2)), 0)))
- 逻辑:
--将布尔值转换为1/0,SUMPRODUCT把D列值和对应匹配结果相乘后求和,等价于只累加匹配成功的D列值。
原公式失效原因
SUMIFS要求条件区域和条件的维度完全对应,直接传入多结果数组作为条件,Excel无法正确匹配每一行的条件。- 单独的
ARRAYFORMULA中用=对比多结果数组时,只会拿A列每个值和数组第一个元素对比,无法匹配所有结果,因此返回零或错误。
内容的提问来源于stack exchange,提问作者user20777937
相关产品推荐
相关产品推荐

