如何批量对我们的工作薄中的工作表进行快速排序

Posted Excel教案

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何批量对我们的工作薄中的工作表进行快速排序相关的知识,希望对你有一定的参考价值。

肯定大家经常对工作表的内容进行排序,比如对数字按照从大到小或者从小到大排序,相信你并不陌生这些常规操作。


我们今天和大家说分析的主要是如何批量对我们的工作薄的工作表进行排序。但是如果我们想对工作表进行排序,那么我们只能手动进行排序操作。如下图所示:

如果我们想对实例文件进行排序的话,只能用手动拖动或者选择移动按钮,进行操作。但是如果对于几千个的工作表进行排序,显然这种方法存在缺陷。那我们我们能否对一个工作薄,有十几张工作表进行快速排序呢?我们的回答是肯定的。


 处理这种问题的Excel VBA方法其实非常的多,可以把工作表的名字写到工作表,然后对工作表的名字排序,然后按照结果对工作表进行排序操作。

 还有一种方法就是按工作表名字写入到数组,对数组进行排序,然后按照排序的结果,移动工作表。也即完成对工作表的排序工作。


我们今天和大家介绍的是第一种,首先我们看看动画的执行的效果:

我们上面的做法其实是分为三部曲的。


第一阶段,将工作簿现有的工作表名称提取到表格的A列。

这个阶段主要是利用For Each Sht In Worksheets循环,将工作表的名字写入到当前活动工作表中的A列

第二阶段,对A列的工作表名称排序操作。

这个阶段的代码,主要是对工作表的A列的值,进行排序操作。

第三阶段,按照我们已经排序号的值,操作代码,让他对我们的工作表进行排序。


这个阶段主要是使用Worksheets(Shtname).Move after:=Worksheets(I - 1),工作表的移动代码进行移动操作。

附上Excel VBA代码:Sub sortsheets() Dim Sht As Worksheet, k&, I&, Shtname As String [a:a].ClearContents '清空A列内容 [a:a].NumberFormat = "@" '设置文本格式,防止文本数值数据变形 [a1] = "目录" k = 1 For Each Sht In Worksheets '遍历工作簿中每个工作表 k = k + 1 '累加K值 Cells(k, 1) = Sht.Name '将工作表名称依次放入表格A列 Next Rows("1:1").AutoFilter Worksheets("total").AutoFilter.sort.SortFields.Add Key:=Range("A1"), Order:=xlDescending With Worksheets("total").AutoFilter.sort .Header = xlYes .Apply End With Set Sht = ActiveSheet '设置变量sht为当前激活的工作表,即目录表。 For I = 2 To Sht.Cells(Rows.Count, 1).End(xlUp).Row '遍工作表A列的数据,A1以外。 Shtname = Sht.Cells(I, 1).Value '将A列值赋值为字符串变量shtname Worksheets(Shtname).Move after:=Worksheets(I - 1) '将工作表依次移动 Next Sht.Activate '重新激活目录表 Rows("1:1").AutoFilter [a:a].ClearContents '清空A列内容End Sub

好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!


我是Excel教案,关注我持续分享更多的Excel技巧!

如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

以上是关于如何批量对我们的工作薄中的工作表进行快速排序的主要内容,如果未能解决你的问题,请参考以下文章

VBA 工作薄中所有工作表怎么用代码表示

一个工作薄中快速新建多个数据表

一个工作薄中快速新建多个数据表

一个工作薄中快速新建多个数据表

用vba新建工作表,并命名

如何查看excel工作薄中有几个工作表