從追蹤碼取出發票編號(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。