如何在Excel/Google Sheets中用FILTER函数返回指定物料的供货店铺数组?
Google Sheets 物料对应店铺筛选解决方案
问题场景
现有店铺-原材料矩阵(B3:H13区域):
- B列:物料名称
- C3:H3:店铺名称(Shop A至Shop E)
- 单元格内"Yes"表示对应店铺有该物料现货
需求:根据J3单元格指定的物料名称,返回所有持有该物料的店铺名称数组。
错误公式分析
你尝试的公式:
=transpose(FILTER(C3:H3;(C4:H13="Yes")*B4:B13=J3))
问题在于条件逻辑错误:(C4:H13="Yes")*B4:B13 会将B列的文本物料名与布尔值相乘,无法生成正确的匹配条件,导致筛选失败。
正确公式
可以使用以下任一公式解决:
方法1:INDEX+MATCH组合(推荐,非易失函数)
=TRANSPOSE(FILTER(C3:H3, INDEX(C4:H13, MATCH(J3, B4:B13, 0), 0) = "Yes"))
逻辑说明:
MATCH(J3, B4:B13, 0):定位J3物料在B列中的行号INDEX(C4:H13, 行号, 0):取出该物料对应的整行店铺库存数据FILTER(C3:H3, ... = "Yes"):筛选出该行中标记为"Yes"的店铺名称TRANSPOSE:将结果转为横向数组
方法2:布尔条件组合
=TRANSPOSE(FILTER(C3:H3, (B4:B13=J3)*(C4:H13="Yes")))
逻辑说明:
(B4:B13=J3):生成布尔数组,标记J3物料所在行(C4:H13="Yes"):生成布尔数组,标记所有有现货的单元格- 两者相乘后,仅对应物料行且有现货的位置为
TRUE,以此筛选店铺名称
将上述任一公式输入到J5单元格即可得到正确结果。
内容的提问来源于stack exchange,提问作者Amir S.
相关产品推荐
相关产品推荐

