Excel-VBA分离字符串中的字母、数字和汉字
应用场景
批量一键分离字符串中的数字、字母、汉字
知识要点
1:Asc 函数 返回一个 Integer,代表字符串中首字母的字符代码。如果ASCII值小于0,那么它是汉字或者标题
2:Like 运算符 用来比较两个字符串。 Like '[a-z,A-Z]'  是字母
3:Like '#' 是数字
4:WorksheetFunction.Trim 方法 删除文本中的所有空格(除了单词之间的单个空格外)。
Sub 调用分离字符过程()
If TypeName(Selection) = 'Range' Then
If Selection.Columns.Count > 1 Then MsgBox '只能选择一列', 64, '提示': Exit Sub
If Selection.Row = 1 Then MsgBox '不要选择第一行', 64, '提示': Exit Sub
Selection(1).Offset(-1, 1).Resize(1, 3) = Array('汉字', '数字', '字母') '写入标题
vba 字符串函数
Call 分离字符(Selection) '调用  分离字符 对过程选区进行字符分离
End If
End Sub
Sub 分离字符(Rng As Range)
Dim Cell As Range, i As Integer, Str As String, hz As String, sz As String, zm As String
For Each Cell In Rng '遍历参数代表区域中的每一个单元格
If Len(Cell) > 0 Then '如果是非空单元格
For i = 1 To Len(Cell.Text) '遍历单元格字符中的每一个字符
Str = Mid(Cell.Text, i, 1) '逐个提示字符
If Asc(Str) < 0 Then hz = hz & Str '如果ASCII码小于0,串联起来赋值给hz变量
If Str Like '[a-z,A-Z]' Then zm = zm & Str
If Str Like '#' Or Str = '.' Then sz = sz & Str
Next i
End If
Cell.Offset(0, 1) = hz '在选区后面的三个单元格分别写入汉字、数字、和字母
'数字部分需要处理前置、后置小数点及多个小数点同时出现的问题,方法为将小数点转换成空格,在用trim去除多余的空格,最后将空格替换成小数点
Cell.Offset(0, 2) = Replace(WorksheetFunction.Trim(Replace(sz, '.', ' ')), ' ', '.')
Cell.Offset(0, 3) = zm
hz = '': zm = '': sz = ''
Next Cell
End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。