Excel表格按照字符后面的数值排序

2025-10-02 22:37:26

1、打开Excel表格,点击【开发工具】、【Visual Basic】调出VBE编辑器。

Excel表格按照字符后面的数值排序

2、点击【插入】、【模块】。

Excel表格按照字符后面的数值排序

3、在模块代码框里边输入以下VBA程序代码。

Sub NumberPaixu()

Dim i1, i2, i3, str1

On Error Resume Next

Application.ScreenUpdating = False '关闭屏幕显示更新

Set mysheet3 = ThisWorkbook.Worksheets("Sheet3") '定义工作表Sheet3

For i1 = 2 To 1000  '从第2行到1000行

 Set MyCell = mysheet3.Cells(i1, 1) '定义单元格

  If MyCell <> "" Then  '如果单元格不是空白,则

   For i2 = 1 To Len(MyCell) '对单元格里边的每一个字符进行截取、判断

    str1 = Mid(MyCell, i2, 1)

    If IsNumeric(str1) = True Then  '如果截取的字符是数字,则

     i3 = i3 + 1

     mysheet3.Cells(i1, 2) = Left(MyCell, i2 - 1) '写入B列单元格

     mysheet3.Cells(i1, 3) = Right(MyCell, Len(MyCell) - i2 + 1) '写入C列单元格

     Exit For '退出For循环

    End If

   Next

  End If

Next

mysheet3.Sort.SortFields.Clear '清除高级筛选里边的条件

mysheet3.Sort.SortFields.Add Key:=Range("C2:C1000"), _

SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With mysheet3.Sort '筛选

    .SetRange Range("A2:C1000")

    .Header = xlGuess

    .MatchCase = False

    .Orientation = xlTopToBottom

    .SortMethod = xlPinYin

    .Apply

End With

For i1 = 1 To i3

 mysheet3.Cells(i1 + 1, 1) = mysheet3.Cells(i1 + 1, 2) & mysheet3.Cells(i1 + 1, 3)

Next

mysheet3.Columns("B:C").Delete    '删除B、C列

Application.ScreenUpdating = True '恢复屏幕更新显示

End Sub

Excel表格按照字符后面的数值排序

4、确认无误后(主要是B、C两列里边没有数据),在VBE编辑器的功能区里边点击“运行”图标运行程序。

Excel表格按照字符后面的数值排序

5、回到Excel工作表界面,将会看到A列数据的排序结果。

Excel表格按照字符后面的数值排序

1、VBA程序思路解读:

1、采用通常的方法排序,其只会按照字母顺序排序,因此,可以将单元格里面的字符和数字分开,再对数值按照升序排序,最后把它们撮合。

2、程序里边关闭屏幕显示更新可以提高运行速度。

3、筛选时需要先清除筛选条件,再筛选,以免多次筛选时高级筛选里边的筛选条件过多。

4、由于借助的是B、C两列作为辅助列,因此,需要确保这两列上面没有数据,以免造成B、C两列的数据丢失。

Excel表格按照字符后面的数值排序

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢