excel表格中提取英文,excel中英文分离得到纯中文

  excel表格中提取英文,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,电脑、计算机、大脑四个字符)。不像英文,一个汉字是2字节(全角符号也是2字节),一个英文字符是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,即从右侧截取六个字符“(Alex)”。由于半角符号的字节数与全角符号不同,这里需要注意的是全角符号(如括号)输入的符号会被识别为双字节字符,所以上例中的括号之类的符号必须事先转换为半角字符,否则提取会出错。

  由于最后提取的英文名中含有括号,继续在E2中输入公式“=SUBSTITUTE(SUBSTITUTE(D2, (,),),)”。这个公式的意思是分别去掉左右括号。注意双引号里的括号是中文还是半角。您可以使用此公式分别删除半角和全角等相应的符号(图5)。

  在上面的例子中,是前中后英语的混合。如果是前英文后中,只需要切换左右功能即可。如果两种方法混合在一起,可以使用排序方法对中文和英文进行排序,然后使用上述方法进行提取(图6)。

  

3. 不分彼此 按需提取中英文

  如果上面的公式是在很多情况下从中英文混合数据中提取数据,我们需要提前进行排序,所以需要根据不同的情况输入不同的提取公式。如果我们想实现更简单的操作,我们也可以使用VBA脚本来实现快速提取。

  去https://pan.baidu.com/s/1mioKSFu下载需要的代码文件,然后按Alt F11快速打开Visual Basic编辑器,点击“插入模块”将下载的代码复制到模块中(图7):

  单击“保存”将文件保存为“启用宏的工作簿”并启用宏设置。这样,再次打开工作簿,在B2输入公式“=SplitStringChs(A2)”,在C2输入“=split string(A2)”。这个公式就是我们在上面的脚本中做的宏,让中英文字符向下填充后可以自由地从B和C中提取出来,不管是哪种混合(图8)。

excel表格中提取英文,excel中英文分离得到纯中文