MID 函數是 Excel 的30個必學函數之一。我們可以透過 MID 函數從選定的文字串中,提取指定數量的字符,節省大量的手動操作。
本文將會用 5 分鐘的時間,完整教學 MID 函數的用法、範例、進階用法、常見錯誤等等。
如果你常常忘記 MID 函數怎麼寫,或者想要大幅提升工作效率,這篇文章將能幫助到你。
那麼我們就開始吧!
MID 函數用法
以下是 MID 的函數說明:
MID ( text , start_num , num_chars )
引數名稱 | 解釋 |
---|---|
text | 選定儲存格(直接打文字也可以) |
start_num | 從第幾個字元開始提取 |
num_chars | 提取幾個字元數 |
接下來,我們來看看 MID 的幾個使用範例。
MID 範例教學 – 提取中文姓名
如果想要提取每個人的「姓氏」,那麼 MID 函數可以這樣寫:
=MID ( B3 , 1 , 1 )
引數名稱 | 解釋 | 範例 |
---|---|---|
text | 選定儲存格(直接打文字也可以) | 選定 B3 |
start_num | 從第幾個字元開始提取 | 從第1個字元開始提取 |
num_chars | 提取幾個字元數 | 提取1個字元 |
而如果要提取每個人的名字的話,MID 函數就要輸入:
=MID ( B3 , 2 , 2 )
引數名稱 | 解釋 | 範例 |
---|---|---|
text | 選定儲存格(直接打文字也可以) | 選定 B3 |
start_num | 從第幾個字元開始提取 | 從第2個字元開始提取 |
num_chars | 提取幾個字元數 | 提取2個字元 |
MID 範例教學 – 提取日期
但是,如果用 MID 函數提取日期的話,會出現奇怪的結果:
=MID ( B3 , 1 , 4 )
引數名稱 | 解釋 | 範例 |
---|---|---|
text | 選定儲存格(直接打文字也可以) | 選定 B3 |
start_num | 從第幾個字元開始提取 | 從第1個字元開始提取 |
num_chars | 提取幾個字元數 | 提取4個字元 |
照道理說應該會提取出「2024」,但結果卻出現了不知道從哪裡來的「4529」。
這是因為 EXCEL 中的日期是以數字形式儲存的。在 EXCEL 的眼中,2024年1月1日是「45292」,因此 MID 函數才會提取到「4529」。
想要順利提取日期,這裡提供2種方法:
- 改用 YEAR、MONTH、DAY 函數
- 先用 TEXT 函數轉為「文本」後再用 MID 函數提取
改用 YEAR、MONTH、DAY 函數
比起 MID 函數還要計算字元數量,YEAR 函數則簡單得多:
=YEAR ( B3 )
YEAR / MONTH / DAY 函數會直接提取出日期的年 / 月 / 日,算是非常直覺的函數。
先用 TEXT 函數轉為「文本」後再用 MID 函數提取
如果堅持要使用 MID 函數,則需要搭配 TEXT 函數,先將日期的「數字格式」轉為「文字格式」。
=TEXT ( B3 , “yyyy/mm/dd” )
如此一來,TEXT 函數就會將日期轉換為「年年年年 / 月月 / 日日」的文字格式。
接著再用 MID 函數直接提取就可以囉!
=MID ( C3 , 1 , 4 )
MID 進階用法 – 結合 SEARCH 提取英文姓氏、名字
中文名字通常是3個字,用 MID 函數提取非常簡單,但如果是「英文名字」,就會遇到每個人的姓氏、名字長度不一樣,不知道該從哪裡開始提取的問題。
這時,需要配合 SEARCH 函數,先找出名字與姓氏之間的「空白格」是第幾個字元:
=SEARCH ( ” “ , B3 )
SEARCH 函數就會找出空白格是在姓名中的第幾個字元。在本例中,Morris Wang 的空白格是第7個字元,Mike Jiang 的空白格是第5個字元,以此類推。
接著再從第1個字元開始,提取到空白格前1格的字元數,也就是 SEARCH(” “,B5)-1,就可以提取出名字了:
=MID ( B3 , 1 , SEARCH(” “,B3)-1 )
如果要提取出姓氏,就需要從空白格後1格字元開始提取,也就是SEARCH (” “,B3)+1,並且提取到最後:
=MID ( B3 , SEARCH(” “,B3)+1 , 100 )
值得注意的是,只要提取的字元數量超過本身的字串長度,MID 函數就只會顯示到最後一個字元。
在這個範例中,我提取的字元數量是100,因此只要沒有人的姓氏超過100個字元數,MID 函數就可以提取到最後一個字元喔!
MID 常見錯誤(#VALUE!、#NAME!、#REF!)
- #VALUE!:以下情況會顯示#VALUE!:
- start_num小於1。
- num_chars小於0。
- #NAME!:通常是由於輸入了錯誤的語法,導致MID函數無法正常運作
- #REF!:原本參照的儲存格被刪除或異常。
MID 溫馨提醒
- 如果 start_num 大於選定文字的字元數,MID函數會回傳空白格。
- 如果 num_chars 提取數量超過字元總數量的話,MID函數就會直接顯示到最後一個字元。
- 如果 num_chars 等於0,MID函數會回傳空白格。
- 如果要用MID函數提取日期,需要先用TEXT函數將日期轉為文字(或者直接更改儲存格格式)。