如何修改Excel公式实现批量匹配过滤产品的List B附加信息?
| 0 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Brand A | Product 01 | 600 | Product 01 | US | online | |
| 2 | Brand A | Product 02 | 100 | Product 02 | NL | local shop | |
| 3 | Brand A | Product 02 | 300 | Product 03 | AT | online | |
| 4 | Brand B | Product 01 | 400 | Product 04 | FR | local shop | |
| 5 | Brand B | Product 03 | 500 | ||||
| 6 | Brand C | Product 02 | 200 | ||||
| 7 | Brand C | Product 02 | 800 | Brand C | |||
| 8 | Brand C | Product 04 | 900 | Product 02 | NL | local shop | |
| 9 | Brand C | Product 01 | 700 | Product 04 | FR | local shop | |
| 10 | Brand D | Product 03 | 250 | Product 01 | US | online | |
| 11 | Brand D | Product 03 | 460 | ||||
| 12 | Brand D | Product 04 | 690 |
上述表格包含两个列表:
- List A =
Range A1:C12 - List B =
Range E1:G4(说明:该列表中的产品始终唯一)
已在Range E8:E10区域使用公式完成对List A的产品过滤,功能正常:
=UNIQUE(FILTER(B:B;A:A=E7))
现需在Range F8:G10区域,为这些过滤后的产品匹配来自List B的附加信息。目前仅能通过以下公式实现第一行的信息匹配,请问如何修改公式以适配所有行?
=DROP(FILTER(E1:G4;E1:E4=E8);;1)
解决方案
以下是几种实用的修改方案,适配批量匹配需求:
方案1:XLOOKUP(简洁高效,适用于Excel 365/2021及以上版本)
在F8单元格输入公式,向右拖动到G8,再向下拖动到G10即可:
=XLOOKUP($E8;$E$1:$E$4;F$1:F$4;"")
- 逻辑:锁定产品列
$E8匹配当前行产品,$E$1:$E$4指定List B的产品匹配范围,F$1:F$4调用对应列的附加信息,最后""设置匹配空值时返回空白。
方案2:MAP+LAMBDA(适配原公式逻辑,数组批量填充)
在F8单元格输入数组公式,直接回车即可自动填充F8:G10区域(需Excel 365支持):
=MAP(E8:E10;LAMBDA(x;DROP(FILTER(E1:G4;E1:E4=x);;1)))
- 逻辑:用
MAP遍历E8:E10的所有产品,通过LAMBDA对每个产品执行原有的DROP+FILTER匹配逻辑,批量返回结果。
方案3:VLOOKUP(兼容旧版Excel)
如果使用不支持XLOOKUP的旧版Excel,可在F8单元格输入公式,向右拖动到G8再向下拖动:
=VLOOKUP($E8;$E$1:$G$4;COLUMN()-4;FALSE)
- 逻辑:
COLUMN()-4自动计算当前列对应的返回索引(F列对应第2列、G列对应第3列),无需手动修改索引值,FALSE开启精确匹配。
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

