對于一個混雜各種字母、數字及其他字符和漢字的文本字符串,要提取其中的漢字,在Excel中通常可用下面的公式。例如下圖A列中的字符串,要在B列提取其中的漢字(或詞語)。
如果漢字位于字符串的開頭或結尾,用LEFT或RIGHT函數即可提取,例如上圖中A2:A4區域中的字符串。在B2中輸入下面的公式:
=LEFT(A2,LENB(A2)-LEN(A2))
就會返回字符串中開頭的幾個漢字。
說明:LENB函數和LEN函數都可用返回文本字符串中的字符數,不同的是,LENB函數會將每個漢字(雙字節字符)的字符數按2計數,LEN函數則對所有的字符,無論是單字節還是雙字節都按1計數,因而公式中的“LENB(A2)-LEN(A2)”返回文本字符串中的漢字個數。
同樣對于A6:A8區域中的字符串,在B6中用RIGHT函數即可:
=RIGHT(A6,LENB(A6)-LEN(A6))
如果漢字位于字符串的中間,可使用下面的數組公式。例如圖中A10:A12區域中的字符串,在B10中輸入數組公式:
=MID(A10,MATCH(2,LENB(MID(A10,ROW(INDIRECT("1:"&LEN(A10))),1)),),LENB(A10)-LEN(A10))
公式輸入完畢,按Ctrl+Shift+Enter結束。
說明:公式先用MID函數將字符串中的每個字符分解到到一個字符數組中,然后用LENB函數返回各字符的的字符數,對于漢字會返回“2”。用MATCH函數取得第一個“2”的位置,即第一個漢字的位置,最后再用MID函數提取漢字。
使用上述公式時要求字符串中的漢字是連續的,中間沒有其它字符分隔。如果字符串中的漢字之間有其它字符分隔,例如上圖中的A14單元格,要提取其中的所有漢字,可用下面的自定義函數。方法是:
1. 按Alt+F11,打開VBA編輯器,單擊菜單“插入→模塊”,在代碼窗口中輸入粘貼下面的代碼:
Function 提取漢字(sString As String) As String
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
With regEx
‘搜索整個字符串
.Global = True
‘匹配非漢字
.Pattern = "[^\u4e00-\u9fa5]"
‘將字符串中的非漢字替換為空
提取漢字 = .Replace(sString, "")
End With
Set regEx = Nothing
End Function
說明:上述代碼定義了一個自定義函數“提取漢字”。代碼利用RegExp對象使用正則表達式匹配模式,清除字符串中的所有非漢字,得到其中的漢字。
2. 返回Excel工作表界面,在B14單元格中輸入公式:
=提取漢字(A14)
即可取得A14單元格字符串中的所有漢字
————————=—-7dc248125164cContent-Disposition: form-data; name=”notpost”0