有时候Excel表格很多,需要对表格进行排序。(当然,要是我设计的表。不存在一个文件很多个表的情况)可以用拖动或者其他方式控制表格的顺序,但比较麻烦。麻烦的时候,就可以用vba写代码完成操作。
1、按Alt + F11,进入vba后台界面2、右键,工程资源管理器,插入模块(没有工程资源管理器?按快捷键Ctrl + R)
1487233272970108.png
(70.92 KB, 下载次数: 0, 售价: 1 金钱)
3、在新建的模块中写入如下代码:OptionExplicit
'作者:杨仕航 '
'日期:2016-10-13 '
PublicSub工作表升序()
WorkSheetSortedFalse
EndSub
PublicSub工作表降序()
WorkSheetSortedTrue
EndSub
'工作表升序(reverse=False)或降序(reverse=True)排列 '
PublicFunctionWorkSheetSorted(OptionalreverseAsBoolean=False)
DimiAsLong,SortedIndexAsLong
'从第二个表格开始判断,进行名称比较 '
Fori=2ToActiveWorkbook.Sheets.Count
SortedIndex=GetSortedIndex(i,reverse)
IfSortedIndexCurrentSheetName)reverseThen
GetSortedIndex=i
ExitFor
EndIf
Next
GetSortedIndex=i
EndFunction4、最后,点击Excel菜单“视图”-->“宏”,执行对应的宏
1487233282790407.png
(98.52 KB, 下载次数: 0, 售价: 1 金钱)
只是想用用这个功能而已的话,下面内容就不用看了。若需要进一步学习的话,继续往下看。下面稍微讲解一下代码的原理。这里主要弄明白两个东西就差不多了:1)冒泡排序2)工作表移动位置
先取表名,用类似冒泡排序的方法判断工作表应该移动到哪个位置,再用工作表的move方法移动工作表。这里我使用到的排序原理是类似冒泡,文字描述起来有点抽象,结合图片描述。假如有6个工作表,顺序如下图:
1487233291734079.png
(1.96 KB, 下载次数: 0, 售价: 4 金钱)
按照顺序,从左到右判断表名。由于第1个表没有其他表参与判断,我们从第2个表开始判断。这样就可以划分两个区域,完成排序部分和等待排序部分:
1487233299740146.png
(6.06 KB, 下载次数: 0, 售价: 2 金钱)
取第2个表,也就是等待排序部分第1个表。升序排序的话,“1”应该要排在“3”前面:
1487233307123329.png
(13.34 KB, 下载次数: 0, 售价: 6 金钱)
接着,继续判断下一个工作表。“2”升序排序要排在“1”和“3”之间:
1487233325644745.png
(12.79 KB, 下载次数: 0, 售价: 2 金钱)
剩下的按照这个逻辑排序下去,直到完成排序。代码原理讲解完毕,你再结合代码尝试一下 |