从追踪码取出发票号(MID + FIND)
测试用例
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
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
题目
题目说明
A2:A5 里的追踪码由三段组成:前缀、方括号里的发票号、国家后缀。你只要中间那段——把 A2 的单号填进 Ref 单元格 B2。
单号长度会变、国家码也会变,所以不能写死任何位置:公式必须自己找到两个括号。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | |
|---|---|---|
| 1 | Tracking code | Ref |
| 2 | ORD[INV-4821]CN | |
| 3 | ORD[INV-4822]US | |
| 4 | ORD[INV-4823]DE | |
| 5 | ORD[INV-4824]FR |
知识点
MID(text, start_num, num_chars) 需要起点与长度。FIND 给你起点(左括号位置加 1),用两次就能算出长度(右括号位置减左括号位置再减 1)。FIND 区分大小写,SEARCH 不区分。
解题思路
答案写在 B2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 B2
- FIND("[", A2) 是左括号位置,单号从它的下一格开始
- 长度是 FIND("]", A2) - FIND("[", A2) - 1
- 公式形状:=MID(?, ?, ?)——起点与长度都来自 FIND
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:一个 FIND 取起点,两个 FIND 算长度
=MID(A2, FIND("[",A2)+1, FIND("]",A2)-FIND("[",A2)-1)
以 ORD[INV-4821]CN 为例:FIND("[") 是 4,所以从第 5 个字符开始;FIND("]") 是 13,长度是 13 - 4 - 1 = 8。MID(A2, 5, 8) 得到 INV-4821。
解法 2:用 FIND 的第三个参数改变查找起点
=MID(A2, FIND("[",A2)+1, FIND("]",A2,FIND("[",A2))-FIND("[",A2)-1)
FIND("]", A2, FIND("[",A2)) 从左括号位置开始找右括号。文本里若出现更早、但不是你要的 ] 时,这种写法才正确。
函数指南
常见问题
怎么取出两个字符之间的文本?
用 MID 搭配两次 FIND:=MID(A2, FIND("[",A2)+1, FIND("]",A2)-FIND("[",A2)-1)。+1 跳过左括号,-1 让长度不含右括号。
该用 FIND 还是 SEARCH?
FIND 区分大小写、不支持通配符;SEARCH 不区分大小写且支持通配符。括号这类分隔符两者行为相同,若同一公式里大小写另有要求,选 FIND。