用商品名称的一部分查价格(VLOOKUP 通配符)
题目
题目说明
POS 导出的商品名称很长——Arabica Coffee Beans 1kg——但搜索框里永远只有一个关键字。关键字在 D2,价目表在 A2:B5。请在 Price 单元格 F2 写出公式,让输入 Coffee 也能命中第一个名称含它的商品。
部分匹配需要在关键字两侧加通配符,而且必须用精确匹配——用近似匹配(TRUE)时星号会被忽略,还会挑到别的行。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | D | F | |
|---|---|---|---|---|
| 1 | Product | Price | Keyword | Price |
| 2 | Arabica Coffee Beans 1kg | 18 | Coffee | |
| 3 | Decaf Coffee 500g | 15 | ||
| 4 | Green Tea 250g | 12 | ||
| 5 | Cold Brew Coffee 1L | 21 |
知识点
样式是「拼」出来的:"*" & D2 & "*" 把 Coffee 变成 *Coffee*,就能命中名称中的任意位置。通配符只在精确匹配(FALSE)下有效。多行匹配时,返回的是从上往下第一行。
解题思路
答案写在 F2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 F2
- 关键字在 D2;名称在 A2:A5、价格在 B2:B5
- 在关键字两侧加星号,让它能在名称中间命中
- 公式形状:=VLOOKUP(?, ?, ?, FALSE)——样式放在第一个参数
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:VLOOKUP 搭配通配符样式
=VLOOKUP("*"&$D$2&"*",$A$2:$B$5,2,FALSE)
星号代表「前后都可以有字」,所以 *Coffee* 会命中 Arabica Coffee Beans、Decaf Coffee 与 Cold Brew Coffee。VLOOKUP 取第一个命中的行,再读第 2 列。
解法 2:INDEX + MATCH 用同样的样式
=INDEX($B$2:$B$5,MATCH("*"&$D$2&"*",$A$2:$A$5,0))
MATCH 也支持通配符,而且返回位置、不受列号限制。当要取的值在名称列左边时特别好用。
函数指南
常见问题
VLOOKUP 可以只匹配单元格里的一部分吗?
可以,用通配符:把样式拼成 "*"&关键字&"*",并把最后一个参数保持 FALSE(精确匹配)。星号代表任意字符,所以关键字可以在名称的任意位置。
为什么用 & 拼样式,而不是直接写 "*Coffee*"?
写死关键字等于这条公式只会回答一个问题。"*"&D2&"*" 会读 D2 的内容,同一个公式今天查 Coffee、明天查 Tea(用例 2)。
多行匹配时 VLOOKUP 返回哪一行?
从上往下第一行。用例 1 有三个商品含 Coffee,答案是 Arabica 那一行。如果你需要全部匹配结果,VLOOKUP 不是合适工具——那要用 FILTER。