分享

Excel-VBA分离字符串中的字母、数字和汉字

 L罗乐 2017-09-22

应用场景

批量一键分离字符串中的数字、字母、汉字


知识要点

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('汉字', '数字', '字母') '写入标题

        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


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多