查询扫描进来、格式脏掉的 SKU(TRIM + UPPER)
测试用例
1
2
3
重置
提交
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
测试用例
1
2
3
重置
提交
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
题目
题目说明
条码扫描器写进来的 SKU 带前后空格、大小写也不对,所以 E1 是 sku-103 ,而 A2:C6 的价目表存的是干净的大写键。把这个扫描码的价格填进 Price 单元格 E2,查不到时显示 "Not found"。
在公式里清理扫描码——不要改 E1,也不要加辅助列。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | SKU | Product | Price | Scanned SKU | sku-103 |
| 2 | SKU-101 | Keyboard | 49 | Price | |
| 3 | SKU-102 | Mouse | 19.5 | ||
| 4 | SKU-103 | Monitor | 24.99 | ||
| 5 | SKU-104 | Dock | 89 | ||
| 6 | SKU-105 | Cable | 12.5 |
知识点
TRIM 去掉前后空格、UPPER 统一大小写,清理后的键才对得上表。XLOOKUP 的第四个参数就是「找不到时的返回值」,不必再包 IFERROR;INDEX + MATCH 则要靠 IFERROR 达到同样效果。
解题思路
答案写在 E2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 E2
- 先清理查找键:TRIM(UPPER(E1))
- XLOOKUP 的第四个参数是找不到时要返回什么
- 公式形状:=XLOOKUP(?, ?, ?, ?)
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:XLOOKUP 搭配清理后的键与默认值
=XLOOKUP(TRIM(UPPER(E1)), A2:A6, C2:C6, "Not found")
TRIM(UPPER(" sku-103 ")) 得到 "SKU-103",对上 A4,于是 XLOOKUP 返回 C4 的 24.99。查不到时第四个参数返回 "Not found",而不是 #N/A。
解法 2:INDEX + MATCH 外包 IFERROR
=IFERROR(INDEX(C2:C6, MATCH(TRIM(UPPER(E1)), A2:A6, 0)), "Not found")
同样先清理:MATCH 找出第几行、INDEX 取价格,找不到时由 IFERROR 补上默认值——也就是 XLOOKUP 用参数做到的那件事。
函数指南
常见问题
两个值看起来一样,查找却失败?
通常是看不见的空格或大小写:"SKU-103" 与 " sku-103 " 是不同的字符串。比较前用 TRIM 与 UPPER 清理。
怎么不显示 #N/A,改成友好提示?
XLOOKUP 的第四个参数就是默认值:=XLOOKUP(键, 键区域, 值区域, "Not found")。INDEX + MATCH 则用 IFERROR 包起来。