背景:我收到一个excel表格,里面含有至少两个不连续的数字,比如,1年纪2班,1年纪3班,2年纪1班 两个逻辑。我想对这个进行排序整理,怎么办?
限制因素:①数字是文本形式,不能正确排序。②excel筛选通常按照最后一个数字排,少一个逻辑的划分。
处理手段:我将两个数字分别提取出来,利用排序即可!
Sub dealcelltonum()
r = Cells(Rows.Count, 1).End(3).Row //被处理数据放置第一列,可修改
arr = [a1].Resize(r)
For j = 2 To UBound(arr) //从第二行开始处理
k = 2 //第二列开始填充数字,可修改
str1 = ""
For i = 1 To Len(arr(j, 1)) + 1 //必须加一,否则最后位数字时,不能执行判据
x = Mid(arr(j, 1), i, 1)
ty = x Like "[0-9]" //判断是否满足要求
If x Like "[0-9]" Then
str1 = str1 & x
flag = 1
End If
If Not ty And flag = 1 Then //当上一个数据是数字,但这一个不是数字时,真 (即数字不连续)
flag = 0
Cells(j, k) = str1
str1 = ""
k = k + 1
End If
Next i
Next j
End Sub
使用说明:将待处理数据放置第一列,生成的数字从第二列开始。将程序中的“//”改为“ ’ ”,C的注释和VBA不同!