利用VBA实现:提取Excel单元格数字

背景:我收到一个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不同!

你可能感兴趣的:(Excel,VBA,excel)