返回目录:excel表格制作
肯定大家经常对工作表的内容进行排序,比如对数字按照从大到小或者从小到大排序,相信你并不陌生这些常规操作。
我们今天和大家说分析的主要是如何批量对我们的工作薄的工作表进行排序,当然这个功能Excel中并没有提供给我们使用。
但是如果我们想对工作表进行排序,那么我们只能手动进行排序操作。如下图所示:
如果我们想对实例文件进行排序的话,只能用手动拖动或者选择移动按钮,进行操作。但是如果对于几千个的工作表进行排序,显然这种方法存在缺陷。那我们我们能否对一个工作薄,有十几张工作表进行快速排序呢?我们的回答是YES。
处理这种问题的Excel VBA方法其实非常的多,可以把工作表的名字写到工作表,然后对工作表的名字排序,然后按照结果对工作表进行排序操作。还有一种方法就是按工作表名字写入到数组,对数组进行排序,然后按照排序的结果,移动工作表。也即完成对工作表的排序工作。
我们今天和大家介绍的是第一种,阅读以下文章大概需要耗时2分钟。
首先我们看看动画的执行的效果:
我们上面的做法其实是分为三部曲的。
第一阶段,将工作簿现有的工作表名称提取到表格的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
PS:学习的苦难需要我们主动面对,生活的苦难你躺着它自己主动就过来啦!与君共勉!!!
以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!
唯有不断学习,才能不被淘汰!
Excel中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?