应用场景 批量一键分离字符串中的数字、字母、汉字 知识要点 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 |
|
来自: L罗乐 > 《VBA基础入门教程》