全部練習題 / 文字

從追蹤碼取出發票編號(MID + FIND)

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

題目

題目說明

A2:A5 裡的追蹤碼由三段組成:前綴、方括號裡的發票編號、國家後綴。你只要中間那段——把 A2 的編號填進 Ref 儲存格 B2。

編號長度會變、國碼也會變,所以不能寫死任何位置:公式必須自己找到兩個括號。

題目資料

用表格檢視整份資料(可選取、可複製)
這道題的資料表
AB
1Tracking codeRef
2ORD[INV-4821]CN
3ORD[INV-4822]US
4ORD[INV-4823]DE
5ORD[INV-4824]FR

觀念解析

MID(text, start_num, num_chars) 需要起點與長度。FIND 給你起點(左括號位置再加 1),用兩次就能算出長度(右括號位置減左括號位置再減 1)。FIND 區分大小寫,SEARCH 不區分。

解題思路

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

  1. 目標儲存格是 B2
  2. FIND("[", A2) 是左括號位置,編號從它的下一格開始
  3. 長度是 FIND("]", A2) - FIND("[", A2) - 1
  4. 公式形狀:=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 · LEN

相關練習

常見問題

怎麼取出兩個字元之間的文字?

用 MID 搭配兩次 FIND:=MID(A2, FIND("[",A2)+1, FIND("]",A2)-FIND("[",A2)-1)。+1 跳過左括號,-1 讓長度不含右括號。

該用 FIND 還是 SEARCH?

FIND 區分大小寫、不接受萬用字元;SEARCH 不區分大小寫且支援萬用字元。括號這類分隔符兩者行為相同,若同一條公式裡大小寫另有要求,選 FIND。