你我也许在工作中都有遇到过相同的一个问题:一个工作簿有几十个、甚至更多工作表,如果这些工作表的顺序不太符合要求,那你是不是得重新排序一下呢,那你又是怎样去处理的呢?其实不难,有这样一个高效便捷的方法,下面就由我来具体操作示范一下吧!
具体操作方法
第一步:新建工作表。新建一张空白工作表,将其命名为目录。
第二步:调出VBA编辑窗口。选择“目录”工作表名称,右击,选择查看代码(或直接按组合键ALT+F11);
第三步:编写提取名称目录代码。双击Thisworkbook,打开代码编辑器,复制下面代码到代码编辑窗口,然后回到之前的Excel界面。代码如下:
Sub ml()
Dim sht As Worksheet, k&
[a:a] = ""
'清空A列数据
[a1] = "目录"
k = 1
For Each sht In Worksheets
'遍历工作簿中每个工作表
k = k + 1
'累加K值
Cells(k, 1) = sht.Name
'将工作表名称依次放入表格A列
Next
End Sub
第四步:插入控件。点击开发工具(如图1),选择插入一个控件,插入控件后会自动跳出指定宏窗口,选择Thisworkbook.ml,点击确定(如图2);
图 1
图 2第五步:重命名控件和提取目录。重命名控件为提取工作表目录,重命名后双击,即可获取工作表目录,目录会呈现在A列,如下图所示;
第六步:排序工作表名称。排序工作表我们可以筛选排序或者手动排序。筛选排序,点击筛选按钮,点击升序或者降序:手动排序,用鼠标逐个调整。
第七步:编写排序代码。打开之前代码编辑窗口,复制粘贴下面代码。代码如下:
Sub sortsheet()
Dim sht As Worksheet, shtname$, i&
Set sht = ActiveSheet
'设置变量sht为当前激活的工作表,即目录表。
For i = 2 To sht.Cells(Rows.Count, 1).End(3).Row
'遍历工作表A列的数据,A1以外。
shtname = sht.Cells(i, 1)
'将A列值赋值为字符串变量shtname
Sheets(shtname).Move after:=Sheets(i - 1)
'将工作表依次移动
Next
sht.Activate
'重新激活目录表
End Sub
第八步:插入控件。再插入和之前一样的控件,将其命名为批量排序工作表,插入控件后会自动跳出指定宏窗口,选择Thisworkbook.sortsheet,点击确定;
第九步:排序工作表。单击批量排序工作表控件,排序结束(如下图);
到这里,排序就结束了,自我感觉操作简单,不管你有没有VBA基础其实并不重要,赶快是试一下吧,如有不懂之处,欢迎留言讨论!
期待你的关注和转发分享,更多精彩内容在持续更新中.............
往期精彩文章推荐: