全部練習題 / 文字

從最後一筆代碼算出下一個採購單號(MID + VALUE)

中等 文字
題目說明
提示 0/4
官方解法 2
–
測試案例
1
2
3
重設
提交
fx
A
B
C
D
E
F
G
1
2
3
4
5
6
7
8
9
10
正在載入互動式試算表...
正在準備儲存格資料與公式求解引擎
○ 就緒 請在反白的目標儲存格輸入公式,然後點「提交」。

題目

題目說明

採購單編碼是 PO-<年份>-<序號>,下一張要接續 A2 的序號,而不是從 1 開始。序號是最後四個字元。把下一個序號以數字填進 Next number 儲存格 B2。

結果必須是真正的數字,不是文字 "0043"——下一步流程要拿它做計算。

題目資料

用表格檢視整份資料(可選取、可複製)
這道題的資料表
AB
1PO codeNext number
2PO-2026-0042
3PO-2026-0043
4PO-2025-0199

觀念解析

RIGHT(A2, 4) 取出序號,VALUE 把它變成數字,因為文字 "0042" 加 1 會變成 "00421"。用兩次 FIND 的 MID 是更精確的路線:序號在第二個連字號之後開始,所以完全不需要假設代碼長度。代碼裡的前導零,就是文字值與數字值不相同的原因。

解題思路

答案寫在 B2。送出時我們會換 3 組輸入重跑你的公式,寫死數字一定過不了 —— 公式必須跟著儲存格走。

  1. 目標儲存格是 B2
  2. 序號是 A2 的最後四個字元
  3. 文字加一會變成串接——先轉成數字
  4. 公式形狀:=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 在中間切。寫死位置的話,年份或前綴一改就壞。