EXCEL VBA——工作表批量排序
- 2026-11-05 11:10:45
工作表排序

00

对现有若干工作表进行批量重新排序


01

第一步提出表名目录:开发工具选项卡--Visual Basic--右键--插入--模块--粘贴宏--点击运行


00

粘贴宏如下:
Sub GetShtName()
Dim k As Long, sht As Worksheet
Application.ScreenUpdating = False
With Columns(1)
.ClearContents '清空A列原有数据
.NumberFormat = "@" '设置单元格格式为文本
End With
Cells(1, 1) = "目录"
k = 1
For Each sht In ThisWorkbook.Worksheets '遍历工作表
If sht.Name <> ActiveSheet.Name Then '如果sht不等于当前工作表名称
k = k + 1 '累加工作表个数
Cells(k, 1) = sht.Name '工作表名称写入A列
End If
Next
Application.ScreenUpdating = True
End Sub

02

第二步重新排序表格:选中要移动的表格一个或者若干——鼠标移动到线框上——按住Shift+左键拖到,也可以用系统自带的排序


03

第三步按照新建的表名顺序:开发工具选项卡--Visual Basic--右键--插入--模块--粘贴宏--点击运行


00

此处粘贴宏为:
Sub SortSht()
Dim shtActive As Worksheet, i As Long
Dim arr, strShtName As String
On Error Resume Next
Application.ScreenUpdating = False
Set shtActive = ActiveSheet '当前表赋值变量shtactive
arr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row)
'A列数据装入数组arr
For i = 2 To UBound(arr) '遍历数组arr
strShtName = arr(i, 1)
Worksheets(strShtName).Move after:=Worksheets(i - 1)
'指定工作表按顺序排放
Next
shtActive.Select '回到操作表
Application.ScreenUpdating = True
End Sub