從最後一筆代碼算出下一個採購單號(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 在中間切。寫死位置的話,年份或前綴一改就壞。