搜档网
当前位置:搜档网 › Excel自动提取字符串中汉字、英文与数字的函数

Excel自动提取字符串中汉字、英文与数字的函数

提取字符串中汉字、英文与数字的函数


语法:myget(srg,n,start_num )
=myget(srg,1,3) ’从第3位开始取出中文字符
=myget(srg,2) ’从第1位开始取出英文字母,第3个参数省略默认为1
=myget(srg,,5) ’从第5位开始取出数字,第2个参数省略默认为0
=myget(srg) ’第2、3个参数都省略,默认为从第1位取出所有数字

Function MyGet(Srg As String, Optional n As Integer = False, Optional start_num As Integer = 1)

Dim i As Integer
Dim s, MyString As String
Dim Bol As Boolean

For i = start_num To Len(Srg)
s = Mid(Srg, i, 1)
If n = 1 Then
Bol = Asc(s) < 0
ElseIf n = 2 Then
Bol = s Like "[a-z,A-Z]"
ElseIf n = 0 Then
Bol = s Like "#"
End If
If Bol Then MyString = MyString & s
Next

MyGet = IIf(n = 1 Or n = 2, MyString, Val(MyString))

End Function

______________________________________________________________________________________
excel单元格里有杂乱的数字汉字字母,但只想要其中的汉字

excel单元格里有杂乱的数字汉字字母,但只想要其中的汉字,请问如何提取,求函数。急。。。例如:890jdi联e系3人jdi8
里面可能还含有不同的符号,如:“等。情况比较复杂,请高手。。。

最佳答案
给你一个自定义函数代码:

Public Function HZ(rang As String) As String
Dim l As Integer
Dim Str As String
l = Len(rang)
If l < 1 Then
HZ = ""
Exit Function
End If
On Error Resume Next
For i = 1 To l
If Asc(Mid$(rang, i, 1)) < 0 Or Asc(Mid$(rang, i, 1)) > 255 Then
Str = Str & Mid$(rang, i, 1)
End If
Next
HZ = Str
End Function

把这段代码加入模块中,然后在单元格中用公式:(假设 A 列从 A2 开始是你那杂乱的字符)

=HZ(A2)

向下填充即可。

代码加入模块的方法:

Alt + F11 键,进入VBA编辑器。
右击左边的“Microsoft Excel 对象”,在弹出的菜单中点击“插入”-“模块”。
双击模块,在右边把以上代码复制进去。保存。
就可以使用这个自定义函数 HZ 了。
-----------------------------------------------------------------------------------------------------------------------------
在Excel中提取单元格混合字符串中的数字与英文的函数介绍

如何将某个单元格中的由英文与数字混合组成的字符串中的英文与中文分别提取到其它单元格?

首先说明,在Excel中没有满足这种功能的现成的函数,要想使用这种函数,就必须使用自定义的函数。

下面我们先看效果

如下图,A列为中英文混合字符串,我们使用自定义函数,提取A列中的数字,保存到B列。

如下图,我们将混合字

符串中的英文,提取到C列。

要实现如上的效果,我们就得在Excel中使用自定义函数,下面介绍其方法。

首先,在Excel中,按下组合键 Alt+F11 弹出VBA代码窗口。

之后,在VBA代码窗口中,执行菜单操作“插入”→“模块”,然后,会自动创建一个名为“模块1”的模块。

最后,将如下代码粘贴到你的模块1中:

Function snums(cel) '提取字符串中的数字
Application.Volatile
For i = 1 To Len(cel)
st = Mid(cel, i, 1)
If IsNumeric(st) Then
strNum = strNum & st
End If
Next
snums = strNum
End Function

Function snumt(cel) '提取字符串中的文本
Application.Volatile
For i = 1 To Len(cel)
 st = Mid(cel, i, 1)
If Not IsNumeric(st) Then
strNum = strNum & st
End If
Next
snumt = strNum
End Function

最后,保存你的Excel文件,关闭VBA代码窗口。

到这里,整个过程就结束了,您就可以和本文上面所示的图示,使用自定义函数提取英文和数字了。


相关主题