2097 |
快速拆解儲存格技巧中英文對拆函數一看即會 |
||||
實用性 |
●○○ |
難易度 |
●○○○ |
範本檔 |
2097.XLSX |
Hello,大家好,我是錦子老師。今天跟大家來談談如何拆解儲存格內容。我們經常會遇到,中英字元混合的儲存格,需要將中文部分提取出來。一般皆透過函數拆解,在講解函數之前,我們首先要了解,字元和字數在計算機語言裡面的區別。「台灣銀行(Bank Of Taiwan)」這個內容,字元包含24個字元,20個字。不難得知,中文字佔2個字元,英文或數字佔1個字元。符號更簡單,有1個就是1個。
這裡我們用LENB函數,可以求出A1儲存格包含了多少字元(24個)。
公式:LENB(A1)
同理用LEN函數,求出A1儲存格,包含多少字(20個)。
公式:LEN(A1)
如果你儲存格內容都是英文在右,中文在左。那直接套用=LEFT(A1,LENB(A1)-LEN(A1)),函數的意思就是左向右數,利用字數與字元差距(4),正好把中文字部分取出來。
如果要取英文,那就從右往左數,用=RIGHT(A1,2*LEN(A1)-LENB(A1)),將字數乘2(40),減去字元數(24),大家想想,字數乘以2減去所有字元,這些多出來的字節,正好就是英文字所佔的位數。16位,然後用RIGHT提取16位,就能達到我們的效果。
那麼對於中英文前後混合的內容,要快速的提取中文,可以使用這個公式。
=MID(A1,MATCH(" ",MIDB(A1,ROW(INDIRECT("1:"&LEN(A1)+1)),1),0),LENB(A1)-LEN(A1))
輸入完畢按TRL+SHIFT+ENTER三鍵在公式前後加上{}表示是陣列公式,向下複製就能得出結果。
【公式解析】
有興趣的小夥伴可以看看,這個公式為什麼這麼寫。首先是INDIRECT("1:"&LEN(A1)+1),根據A1儲存格的字數,用INDIRECT形成1:21的字串。
第二層函數ROW(1:21),為了得到{1:21}的數組。
MIDB(A1,ROW(INDIRECT("1:"&LEN(A1)+1)),1),利用MIDB函數,對A1儲存格{1:21}的數組提取對應的數值,得到{" ";" ";" ";" ";" ";" ";" ";" ";"(";"B";"A";"N";"K";" ";"O";"F";" ";"T";"A";"I";"W";"A";"N";")"}的數組結果。
再用MATCH函數,以「 」進行查找,查看第一次「 」出現的位置,大家比對一下,MIDB函數的結果數組,第一次出現「 」的位置是1。
在最外面用MID(A1,1,4)就是A1儲存格格,從第1個字開始,擷取4個字,得出了我們的結果。
這裡的難點在於MIDB函數,這是對於{1:21}數組結果的傳回。如果是中文字(或者全形英文數字),MIDB會傳回空格。
在這裡,幫幫希望大家了解。這個函數對於混排提取中文可以實現一鍵成型。但是如果字符串是像這樣「O我K」前後皆有英文或符號,或者使用了全形輸入內容「office幫幫忙」也不適用,沒有完全萬能的公式,只有大家依據規則輸入,以後的操作才能更方便簡單。
留言列表