首頁 / 公式 / Excel MID 函數
文字 Excel + Google Sheets

Excel MID 函數

MID 從一段文字的中間回傳指定字元。產品流水號、證件中間幾位、固定格式編號,都是同樣三個參數:文字、起始位置、要取幾個字元。第一個字元是第 1 位。

MID 函數語法與 3 個參數

=MID(text, start_num, num_chars)

MID 從文字中間回傳一段字元。start_num 是要保留的第一個字元,從 1 起算。num_chars 是要取幾個字元。MID("PRD-1023-A", 5, 4) 是 "1023"。

1 text
必填

來源文字,通常是儲存格參照(A2)。直接寫字串也可以:MID("PRD-1023-A", 5, 4) 回傳 1023。

2 start_num
必填

從第幾個字元開始,1 起算。PRD-1023-A 的第 5 個字元是流水號的第一位數字。0 或負數會回傳 #VALUE!。

3 num_chars
必填

要取幾個字元。從第 5 位取 4 個,就是第 5 到第 8 個字元。

MID 範例:產品代碼第 5 到第 8 個字元

這則 MID 範例從固定格式的產品代碼裡取出四位流水號。

產品代碼起始位置字元數
PRD-1023-A54
SRV-8841-B54
ACC-0050-C54
=MID(A2, 5, 4)

PRD-1023-A 的結果是 1023。第 1 到第 3 個字元是類別,第 4 個是連字號,第 5 到第 8 個是流水號。MID("PRD-1023-A", 5, 4) 回傳 "1023"。SRV-8841-B 是 8841。ACC-0050-C 是 0050,前導零會保留,因為 MID 回傳的是文字。

Excel MID 函數最常踩的 4 個陷阱

1. 起始位置從 1 算,不是 0

第一個字元是第 1 位。MID(A2, 1, 3) 與 LEFT(A2, 3) 結果相同。MID(A2, 0, 4) 回傳 #VALUE!,負的起始位置也一樣。

2. 起始位置超過結尾會得到空白

MID("PRD", 9, 2) 回傳空字串,不是錯誤。文字裡根本沒有第 9 個字元。結果空白卻覺得不該空白時,先用 LEN 看長度。

3. 字元數是負數會得到 #VALUE!

num_chars 必須大於等於 0。負數回傳 #VALUE!。若要求的字元數超出剩餘長度,MID 會回傳剩下的部分:MID("PRD-1023-A", 8, 10) 是 "3-A"。

4. MID 算字元,MIDB 算位元組

空白和連字號各佔一個位置,後面的字元都會跟著往後移。MID 計算字元。MIDB 計算位元組,是雙位元組版本。固定格式的代碼用 MID。

Excel 與 Google Sheets

Microsoft Excel (365 / Desktop)

Excel 的 MID 有三個參數,桌面版與 Microsoft 365 都支援。MIDB 用來計算位元組。跨工作表寫法與其他函數相同:=MID(Sheet2!A2, 5, 4)。

Google Sheets

Google Sheets 的語法相同:MID(text, start_num, num_chars)。MID("PRD-1023-A", 5, 4) 同樣是 1023。兩邊的起始位置都從 1 起算。

這頁對應的 MID 練習

MID 入門實戰:從代碼取出流水號

在下方鎖定迷你表裡敲入公式,取出每個產品代碼的第 5 到第 8 個字元。

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

MID 練習

用 MID 取出中間的流水號。公式要跟著 A2 變,不能把 1023 寫死。

常見問題

Excel MID 函數怎麼運作?

=MID(text, start_num, num_chars) 從 text 的 start_num 開始,回傳 num_chars 個字元。位置從 1 起算。=MID("PRD-1023-A", 5, 4) 回傳 "1023"。

MID 公式要寫哪三個參數?

文字、起始位置、要取的字元數。=MID(A2, 5, 4) 取出 A2 的第 5 到第 8 個字元。

MID、LEFT、RIGHT 有什麼差別?

LEFT 從開頭取,RIGHT 從結尾取,MID 從中間任一位置取。LEFT(A2, 3) 的結果與 MID(A2, 1, 3) 相同。

為什麼 MID 回傳 #VALUE! 或空白?

起始位置小於 1,或字元數是負數,會回傳 #VALUE!。起始位置超過最後一個字元,回傳空字串。若字元數超出剩餘長度,MID 會回傳剩下的字元,不會報錯。