Excel中如何提取指定类别下最低价商品的名称、店铺及单价?
问题
此前已通过条件格式公式 =AND(C2=MIN(FILTER($C$2:$E$7,$A$2:$A$7=$A2)), C2 <> "") 实现了原始数据中同类别全店铺最低价的高亮。现需在汇总表中按类别提取三类信息:
- 最低价商品名称
- 对应店铺名称
- 商品单价
其中单价公式已实现,但商品名称和店铺名称的提取尝试CELL、ROW、COLUMN及INDEX+MATCH组合均未成功,求可行方案。
原始数据表格
| 类别 | 商品 | 店铺1 | 店铺2 | 店铺3 |
|---|---|---|---|---|
| Cat 1 | Product 1 | $30.00 | $35.00 | $27.00 |
| Cat 1 | Product 2 | $29.00 | $24.00 | $25.00 |
| Cat 1 | Product 3 | $32.00 | $33.00 | $35.00 |
| Cat 2 | Product A | $4.00 | $4.30 | $4.50 |
| Cat 2 | Product B | $5.00 | $5.50 | $4.50 |
| Cat 2 | Product C | $3.50 | $4.00 | $3.75 |
汇总表(待填充)
| 类别 | 商品 | 店铺 | 单价公式示例 |
|---|---|---|---|
| Cat 1 | =MIN(FILTER($C$2:$E$7, $A$2:$A$7 = A10)) | ||
| Cat 2 | =MIN(FILTER($C$2:$E$7, $A$2:$A$7 = A11)) |
解决方案
1. 提取最低价商品名称
假设汇总表中Cat 1的商品单元格为B10,使用以下公式:
=INDEX($B$2:$B$7, MATCH(MIN(FILTER($C$2:$E$7, $A$2:$A$7=A10)), FILTER($C$2:$E$7, $A$2:$A$7=A10), 0))
- 逻辑:先用
FILTER筛选出当前类别的所有价格,找到最小值后,用MATCH定位该最小值在筛选结果中的位置,最后用INDEX提取对应行的商品名称。
如果同一类别存在多个相同最低价,可使用TEXTJOIN合并所有对应商品:
=TEXTJOIN(", ", TRUE, INDEX($B$2:$B$7, FILTER(ROW($B$2:$B$7)-1, FILTER($C$2:$E$7, $A$2:$A$7=A10)=MIN(FILTER($C$2:$E$7, $A$2:$A$7=A10)))))
2. 提取对应店铺名称
假设汇总表中Cat 1的店铺单元格为C10,使用以下公式:
=INDEX($C$1:$E$1, MATCH(MIN(FILTER($C$2:$E$7, $A$2:$A$7=A10)), FILTER($C$2:$E$7, $A$2:$A$7=A10), 0))
- 逻辑:与商品名称提取逻辑一致,只是将
INDEX的引用范围改为表头的店铺名称区域。
多最低价时合并店铺:
=TEXTJOIN(", ", TRUE, INDEX($C$1:$E$1, FILTER(COLUMN($C$1:$E$1)-2, FILTER($C$2:$E$7, $A$2:$A$7=A10)=MIN(FILTER($C$2:$E$7, $A$2:$A$7=A10)))))
3. 单价公式优化(可选)
原单价公式可统一为:
=MIN(FILTER($C$2:$E$7, $A$2:$A$7=A10))
下拉公式即可自动适配不同类别,无需手动修改引用行号。
内容的提问来源于stack exchange,提问作者alejnavab
相关产品推荐
相关产品推荐

