|
Sub Test()
'本方法不支持汉字和字母的混合分离!只支持汉字段和字母段的分离!尚未详细测试!
Dim capStr As String
capStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim i As Long '行循环时用
Dim rw As Long '存储A列最后一行的行数
Dim rng As Range '循环存储a列每个单元格
Dim ss As Integer '存贮第一个字母所在的位置
Dim ee As Integer '存储第一个汉字所在的位置
Dim m As Integer '依次提取A列单元格中每个自符要用到的循环变量
rw = [A65536].End(3).Row
For i = 1 To rw
On Error Resume Next
Set rng = Cells(i, 1)
ss = 0
ee = 0
For m = 1 To Len(rng)
If ss > 0 Then GoTo Findee '只存储第一个字母的位置
If InStr(capStr, Mid(rng, m, 1)) > 0 Then ss = m '找第一个字母所在的位置
Findee:
If ee > 0 Then GoTo Findss '只存储第一个汉字的位置!
If Asc(Mid(rng, m, 1)) < 0 Then ee = m '找第一个汉字所在的位置
Findss:
If ss > 0 And ee > 0 Then Exit For
Next
If ss > ee Then c = ss: ss = ee: ee = c
rng.Offset(0, 1) = Mid(rng, ss, ee - ss)
rng.Offset(0, 2) = Mid(rng, ee, Len(rng) - ee + 1)
Next
Set rng = Nothing
End Sub |
|