EXCEL下中英文混雜的各種數據如何按需分別提取
在日常的工作中,我們經常會遇到中英文混雜的各種數據,為了文本規范需要將混雜的中、英文分別提取出來。常規的方法是分別復制其中內容粘貼到新的單元格,如果需要整理的數據很多,比如某外貿公司員工都有中英文名字,但是在原始錄入時是混雜在一起,現在需要分別提取出來(圖1),該怎么辦?
1. 用活分列 快速分離中英文
本例要求實際上是將中、英文分列顯示,因此我們可以使用“分列”工具實現。通過觀察原始數據可以發現,中文和英文名稱是通過一個半角的“(”隔開的,使用這個作為分列符號。首先將A列數據復制B列,點擊“數據→分列”,分隔符號選擇“其他→”半角的“(”(圖2)。
接著分列目標選擇B列,點擊“完成”即可完成分離。不過C列的英文仍會帶個半角的“)”,最后再使用查找替換工具進行消除即可(圖3)。
小提示:
分列的方法關鍵找出原始數據中統一的分隔符號,如果原始數據已經有則直接引用(如上例),如果原始數據沒有則需要手動添加,比如可以在中英文之間插入一個半角空格,并把其作為分割符號即可。
2. 巧用函數 中英文自動提取
分列的方法需要中英文字字符間有統一的分割字符,如果沒有類似符號,在Excel中還可以使用內置函數LENB和LEN進行自動中、英文字符提取。選中B2,在其處輸入“=LEFT(A2,LENB(A2)-LEN(A2))”,在C2輸入=RIGHT(A2,2*LEN(A2)-LENB(A2)),然后將公式下拉填充即可(圖4)。
公式解釋:
這里LENB函數返回指定單元格的字節數,LEN函數則返回單元格的字符數(注意兩者的區別,比如A1內容是“1臺電腦”,那么字節數為“7”(數字1字節+三個漢字6字節),字符數為“4”(1、臺、電、腦四個字符)。漢字和英文不同,1個漢字是2個字節(全角符號也是2個字節),1個英文字符是1個字節。假設某個單元格里有英文字母x個,漢字y個,那么LEN=x+y,LENB=x+2y,解方程后可以得到漢字個數y=LENB-LEN,字母個數x=2*LEN-LENB。
比如在上述實例中,“=LEFT(A2,LENB(A2)-LEN(A2))”,就是通過LEFT函數從左開始截取漢字個數,這里LENB(A2)-LEN(A2)=12-9=3,所以截取三個漢字“方力申”。同理,“=RIGHT(A2,2*LEN(A2)-LENB(A2))”函數中,2*LEN(A2)-LENB(A2)=18-12=6,即從右邊開始截取6個字符“(Alex)”。因為半角和全角符號的字節數不同,這里要注意的是全角輸入的符號(如小括號)等會被識別為雙字節字符,因此像上述實例中的小括號的符號一定要預先轉為半角字符,否則提取會出錯。
由于最終提取出來的英文名稱包含小括號,繼續在E2輸入公式“=SUBSTITUTE(SUBSTITUTE(D2,"(",),")",)”,這個公式的意思是分別去掉左右括號,注意雙引號中的括號是中文還是半角,可以用此公式分別去除半角、全角等相應的符號(圖5)。
上述實例中是前中后英混雜,如果是前英后中,則只需將LEFT和RIGHT函數對換即可。如果是這兩種方式混雜在一起,則可以先使用排序方式,將中英文排序,然后分別使用上述方法進行提取即可(圖6)。
3. 不分彼此 按需提取中英文
上述公式如果要在多情況混雜中英文數據中提取數據,我們就需要預先進行排序才可以完成,這樣需要分別根據不同情況輸入不同提取公式。如果要實現更簡單的操作,我們還可以借助VBA腳本實現快速提取。
到https://pan.baidu.com/s/1mioKSFu下載所需的代碼文件,然后按Alt+F11鍵快速打開Visual Basic編輯器,點擊“插入→模塊”,將下載到的代碼復制到模塊中(圖7):
點擊“保存”,將文件保存為“啟用宏的工作簿”并啟用宏設置。這樣再次打開工作簿,在B2輸入公式“=SplitStringChs(A2)”、C2輸入“=SplitStringeng(A2)”,這個公式就是我們上述腳本里制作的宏,這樣向下填充后就可以在B、C中自由提取中英文字符了,無論是哪種混雜(圖8)。