从最后一笔代码算出下一个采购单号(MID + VALUE)
测试用例
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
○ 就绪 请在高亮的目标单元格输入公式,然后点「提交」。
题目
题目说明
采购单编码是 PO-<年份>-<序号>,下一张要接续 A2 的序号,而不是从 1 开始。序号是最后四个字符。把下一个序号以数字填进 Next number 单元格 B2。
结果必须是真正的数字,不是文本 "0043"——下一步流程要拿它做计算。
题目数据
用表格查看整份数据(可选中、可复制)
| A | B | |
|---|---|---|
| 1 | PO code | Next number |
| 2 | PO-2026-0042 | |
| 3 | PO-2026-0043 | |
| 4 | PO-2025-0199 |
知识点
RIGHT(A2, 4) 取出序号,VALUE 把它变成数字,因为文本 "0042" 加 1 会变成 "00421"。用两次 FIND 的 MID 是更精确的路线:序号在第二个连字符之后开始,所以完全不需要假设代码长度。代码里的前导零,就是文本值与数字值不相同的原因。
解题思路
答案写在 B2。提交时我们会换 3 组输入重跑你的公式,写死数字一定过不了 —— 公式必须跟着单元格走。
- 目标单元格是 B2
- 序号是 A2 的最后四个字符
- 文本加一会变成拼接——先转成数字
- 公式形状:=VALUE(RIGHT(?, ?)) + 1
官方解法
展开 2 种解法(建议先自己试一次)
解法 1:RIGHT + VALUE
=VALUE(RIGHT(A2, 4)) + 1
RIGHT(A2,4) 是 "0042",VALUE 变成 42,加一得 43。少了 VALUE 就会得到 "00421"——典型的「文本加数字」bug。
解法 2:第二个连字符之后取 MID
=VALUE(MID(A2, FIND("-", A2, FIND("-", A2) + 1) + 1, 4)) + 1
内层 FIND 找第一个连字符,外层从它之后开始找第二个,MID 再往后一格开始取。结果相同,而且年份位数改变时代码也不会坏。
函数指南
常见问题
为什么我的数字变成 421 而不是 43?
序号是文本,加一会变成拼接。先包一层 VALUE。
怎么可靠地从代码里取出一段?
用 FIND 找分隔符、再用 MID 在中间切。写死位置的话,年份或前缀一改就坏。