Excel數(shù)組公式怎么提取單元格內(nèi)的字符串
有時需要在Excel中提取單元格內(nèi)文本第一個漢字前的字符串,如果各單元格文本中首個漢字前的字符串長度不等,可用下面的一些數(shù)組公式。以下是學(xué)習(xí)啦小編為您帶來的關(guān)于Excel數(shù)組公式提取單元格內(nèi)第一個漢字前的字符串,希望對您有所幫助。
Excel數(shù)組公式提取單元格內(nèi)第一個漢字前的字符串
例如字符串在下圖所示的A列單元格中,在B列 提取第一個漢字前的字符串。
要提取第一個漢字前的字符串,首先要確定文本中第一個漢字的位置。確定文本中第一個漢字位置的公式有許多,如下面的幾個公式,假如文本在A2單元格中:
=MATCH(2,LENB(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),)
或:
=MATCH(TRUE,MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)>"吖",)
上述兩個公式為數(shù)組公式,需按Ctrl+Shift+Enter結(jié)束,下同。
說明:
1.第一個公式先用MID函數(shù)將單元格內(nèi)文本的各個字符放置到一個數(shù)組,再用LENB函數(shù)判斷各字符的長度,LENB函數(shù)對于單字節(jié)字符返回“1,”,而對于漢字(雙字節(jié))返回“2”。最后用MATCH函數(shù)判斷第一個“2”的位置,即第一個漢字的位置。
2.第二個公式中,先用MID函數(shù)將單元格內(nèi)文本的各個字符放置到一個數(shù)組,然后將每個字符與“吖”字比較。對于常用漢字,比較后的結(jié)果會返回 “TRUE”,因為在Excel中漢字也如同其他單字節(jié)字符一樣可以進(jìn)行比較,“吖”字在常用漢字中“最小”,因而用其與其他漢字比較。如
="吖"<"一"
返回TRUE。
最后用MATCH函數(shù)判斷第一個“TRUE”的位置,即第一個漢字的位置。
對于一些特殊的文本,例如文本的右側(cè)全部為漢字,如上圖A10單元格,可用下面的簡單公式得到第一個漢字的位置:
=2*LEN(A10)-LENB(A10)+1
說明:“2*LEN(A10)-LENB(A10)”返回A10單元格文本中單字節(jié)字符的數(shù)量。
如果第一個漢字前的字符串中不包含空格,下面的數(shù)組公式也可返回第一個漢字的位置,例如A2:A7區(qū)域中的文本。對于A2單元格,數(shù)組公式:
=MATCH(" ",MIDB(A2,ROW(INDIRECT("1:"&LEN(A2))),1),)
將返回“4”。
說明:MIDB函數(shù)對于漢字(雙字節(jié))按“2”計數(shù),即按字節(jié)計數(shù)。MIDB函數(shù)對漢字每個字節(jié)會返回一個空格字符,如下面的公式:
=MIDB("一",1,1)
返回空格字符。而公式:
=MIDB("一",1,2)
返回漢字本身,即“一”字。
公式最后用MATC函數(shù)返回第一個空格字符的位置,即第一個漢字的位置。
取得第一個漢字的位置后,用LEFT函數(shù)即可提取第一個漢字前的字符串,如A2單元格,可用下面的數(shù)組公式:
=LEFT(A2,MATCH(2,LENB(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),)-1)
猜你喜歡:
1.怎么提取Excel單元格小數(shù)點后第N位數(shù)字