项目场景:Excel模糊查询
提示:XLOOKUP / VLOOPUP / OFFSET + MATCH
问题描述:用EXCEL实现表内模糊查询
提示:
以检索出包含“华”的手机品牌和价格
工作表data是商品的品牌和价格,根据关键字检索手机品牌和价格
Table: data
A | B | C | D | E | |
1 | 商品类别 | 品牌 | 产品 | 价格 | 销量 |
2 | 家电 | 美的 | BCD-369WFPZM(E) | 2799 | 6364 |
3 | 家电 | SONY | 65X91J | 10999 | 9455 |
4 | 家电 | 海尔 | EG100HPLUS7SU1 | 5709 | 1957 |
5 | 小家电 | BRAUN | 8553CC | 1699 | 4281 |
6 | 小家电 | PHILIPS | HX9352 | 899 | 4429 |
7 | 小家电 | 徕芬吹风机 | LF03 | 799 | 270 |
8 | 手机 | APPLE | iphone13 Pro | 7999 | 756 |
9 | 手机 | SAMSUNG | Galaxy S22+ | 7399 | 832 |
10 | 手机 | 华为 | Mate40 Pro | 6299 | 6382 |
查询结果:
A | B | C | |
1 | 商品类别 | 品牌 | 结果 |
2 | 手机 | 华 | 华为 |
解决方案:
1. `=XLOOKUP(A2&B2&"*",data!A:A&data!B:B,data!B:B,"",2)`
查询拼接字段于拼接列,返回B列。
2为wildcard模式,识别星号。
2. `=VLOOKUP(A2&B2&"*",IF({1,0},data!A:A&data!B:B,data!B:B),2,0)`
IF({1,0},data!A:A&data!B:B,data!B:B)生成两列数据,第一列是由A、B拼接成的,第二列是B。
VLOOKUP返回匹配的第二列的数据;0代表精确匹配。
3. `=OFFSET(data!B1,MATCH(A2&B2&"*",data!A:A&data!B:B,0)-1,0,1,1)`
MATCH(A2&B2&"*",data!A:A&data!B:B,0)匹配数据所在行数,需要偏移(行数-1)行。