Excel MID 函數
MID 從一段文字的中間回傳指定字元。產品流水號、證件中間幾位、固定格式編號,都是同樣三個參數:文字、起始位置、要取幾個字元。第一個字元是第 1 位。
MID 函數語法與 3 個參數
MID 從文字中間回傳一段字元。start_num 是要保留的第一個字元,從 1 起算。num_chars 是要取幾個字元。MID("PRD-1023-A", 5, 4) 是 "1023"。
來源文字,通常是儲存格參照(A2)。直接寫字串也可以:MID("PRD-1023-A", 5, 4) 回傳 1023。
從第幾個字元開始,1 起算。PRD-1023-A 的第 5 個字元是流水號的第一位數字。0 或負數會回傳 #VALUE!。
要取幾個字元。從第 5 位取 4 個,就是第 5 到第 8 個字元。
MID 範例:產品代碼第 5 到第 8 個字元
這則 MID 範例從固定格式的產品代碼裡取出四位流水號。
| 產品代碼 | 起始位置 | 字元數 |
|---|---|---|
| PRD-1023-A | 5 | 4 |
| SRV-8841-B | 5 | 4 |
| ACC-0050-C | 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 練習
用 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 會回傳剩下的字元,不會報錯。