人气 4542

[Excel技巧] Excel文本中提取英文或中文 [复制链接]

swimsuit 2017-8-21 15:57:06
在工作中,我们经常需要整理一些不规则的数据。如从文字中提取英文,从文字中提取数字等等。
如下面的一组数据,需要从中英文本混合的单元格中提取英文和中文,然后将英文放到一列,中文放到另外一列:
序号中英文
1blue蓝色
2white白色
3red红色
4green绿色
5pink粉红
6pink粉红red

VBA详细代码:1、从包含中英文的文本中提取中文的自定义函数Function SplitStringChs(TheString)  Dim n, Chs  For n = 1 To Len(TheString)    If Asc(Mid(TheString, n, 1)) = 0 Then      Eng = Eng & Mid(TheString, n, 1)    End If  Next  SplitStringEng = Trim(Eng)End Function
代码解析:VBA 函数Asc(string)相当于Excel中的Code()函数,但是VBA中没有定义Code()函数。Asc(string)返回一个 Integer,代表字符串中首字母的字符代码。string 参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS 系统下,则为 -32768 – 32767。mYDATA=ASC("A"),结果 mYDATA的值 65;Excel中单元中输入公式=CODE("A") ,值显示65;
在单元格中应用自定义函数或内置函数,如下:
中英文用VBA提取英文用VBA提取中文用函数提取英文用函数提取中文
blue蓝色=SplitStringEng(A2)=SplitStringChs(A2)=LEFT(A2,2*LEN(A2)-LENB(A2))=RIGHT(A2,LENB(A2)-LEN(A2))
white白色=SplitStringEng(A3)=SplitStringChs(A3)=LEFT(A3,2*LEN(A3)-LENB(A3))=RIGHT(A3,LENB(A3)-LEN(A3))
red红色=SplitStringEng(A4)=SplitStringChs(A4)=LEFT(A4,2*LEN(A4)-LENB(A4))=RIGHT(A4,LENB(A4)-LEN(A4))
green绿色=SplitStringEng(A5)=SplitStringChs(A5)=LEFT(A5,2*LEN(A5)-LENB(A5))=RIGHT(A5,LENB(A5)-LEN(A5))
pink粉红=SplitStringEng(A6)=SplitStringChs(A6)=LEFT(A6,2*LEN(A6)-LENB(A6))=RIGHT(A6,LENB(A6)-LEN(A6))
pink粉红red=SplitStringEng(A7)=SplitStringChs(A7)=LEFT(A7,2*LEN(A7)-LENB(A7))=RIGHT(A7,LENB(A7)-LEN(A7))

结果显示对比为:
中英文用VBA提取英文用VBA提取中文用函数提取英文用函数提取中文
blue蓝色blue蓝色blue蓝色
white白色white白色white白色
red红色red红色red红色
green绿色green绿色green绿色
pink粉红pink粉红pink粉红
pink粉红redpinkred粉红pink粉红red

内容摘自:小智雅汇(头条号)
您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )

GMT+8, 2024-5-19 05:11 , Processed in 0.225571 second(s), 19 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN