夜雨聆风学习资料网

ARTICLE · 1231869

Excel VBA|工作表纯数字名称自然排序,解决 1,10,2 排序错乱

Excel VBA|工作表纯数字名称自然排序,解决 1,10,2 排序错乱
2026年10月22日 星期四 晴天☀️|丙午年 戊戌月 丙寅日
哈喽,你好👋
欢迎来到「搬砖时光日记」。
当工作表名称是纯数字:1、2、3……10,直接普通文本排序,顺序会变成 1,10,2,3,4,不符合我们的阅读习惯。
下面这段 VBA 代码是数字自然排序,按照数值大小排序,输出顺序:1,2,3……10。

升序排序

  1. Alt+F11打开 VBA 编辑器,插入【模块】;
  2. 粘贴下面代码;
Sub SortSheet_NumberAsc()    Dim i As Integer, j As Integer    Dim num1 As Long, num2 As Long    For i = 1 To Sheets.Count - 1        For j = i + 1 To Sheets.Count            num1 = Val(Sheets(i).Name)            num2 = Val(Sheets(j).Name)            If num1 > num2 Then                Sheets(j).Move Before:=Sheets(i)            End If        Next j    Next iEnd Sub
3、按 F5 运行。
提醒:操作前务必备份原文件!排序操作不可逆,适合表名全部为纯数字的场景。

降序排序

Sub SortSheet_NumberDesc()    Dim i As Integer, j As Integer    Dim num1 As Long, num2 As Long    For i = 1 To Sheets.Count - 1        For j = i + 1 To Sheets.Count            num1 = Val(Sheets(i).Name)            num2 = Val(Sheets(j).Name)            If num1 < num2 Then                Sheets(j).Move Before:=Sheets(i)            End If        Next j    Next iEnd Sub
补充说明:
  1. 工作表名称必须全是数字,如果带 #、文字、符号,该代码不适用;
  2. Val 函数只提取开头数字,名称混杂文字容易出错;
  3. 隐藏工作表也会参与排序。

相关学习资料