根據前一篇文章:Excel-取出一個儲存格裡的英文字和中文字(MID,MATCH)
如果中文字在前、英文字在後,該如何處理?
【公式設計與解析】
1. 取出中文字
儲存格B3:{=MID(A3,1,MATCH(TRUE,MID(A3,ROW(1:20),1)<="z",0)-1)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
(1) MID(A3,ROW(1:20),1)
在陣列公式中取出儲存格A3字串中的每一個字元(每例取出20個字)。其中ROW(1:20)會在陣列公式中產生1,2,3, … 20的數字。
(2) MID(A3,ROW(1:20),1)<="z"
該公式用以判斷取出的每一個字元是否大於或等於「z」字元,因為在 ASCII 編碼中,「z」字元的碼為英文字中最大者,若是傳回 FALSE,則代表該字元為英文字,否則為中文字。
(3) MATCH(TRUE,MID(A3,ROW(1:20),1)<="z",1)
在 MATCH 函數中搜尋 TRUE 的位置,在陣列公式中,MATCH 函數找到每一個字元的位置,傳回 1,2,3,4,…。
(4) MID(A3,1,MATCH(TRUE,MID(A3,ROW(1:20),1)<="z",1)-1)
因為英文字在字串的前半段,所以利用 MID 函數由第1個字完,取出「第(3)式-1」個字元。
2. 取出英文字
儲存格C3:{=MID(A3,MATCH(TRUE,MID(A3,ROW(1:20),1)<="z",0),99)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
因為中文字在字串的後半段,所以利用 MID 函數由第(3)式的位置開始,取出99元。(99一個比較大的字數字,無特別的意義)
留言列表