打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
02如何对工作表按名称按自定义规则排序?
说起排序这个词,想必大家都不陌生,这是数据处理过程中最常见的操作之一,但我们今天聊的不是数据排序,而是如何对工作表排序。举个例子,如下图所示,一张工作簿有N张工作表,现在需要按升序对其重新排序。


操作步骤如下▼

首先使用以下代码将工作表的名称罗列在当前表的A列;相关代码我们在如何遍历工作表中分享过了,不知道你是否还记得:

Sub GetShName()    Dim sht As Worksheet, k As Long    Application.ScreenUpdating = False    With Range("a:a")        .Clear '清除所有        .NumberFormat = "@" '设置文本格式    End With    k = 1    Cells(1, 1) = "目录"    For Each sht In Sheets '遍历工作表        k = k + 1 '累加个数        Cells(k, 1) = sht.Name    Next    Application.ScreenUpdating = TrueEnd Sub


示例文件中代码返回结果如下:


然后对A列数据进行排序,这个时候你可以用各种手段修理它们,升序、降序、自定义排序、基操、函数等等,你爱怎么着就怎么着,开心就好。

最后使用以下代码
按照A列排序后的数据对工作表重新排放位置。

代码看不全可以左右拖动..▼

Sub SortSh()    Dim sht As Worksheet, shtAct As Worksheet    Dim aData, i As Long, intCount As Long    Dim strName As String, strErr As String    On Error Resume Next '忽略程序错误继续运行    If ActiveWorkbook.ProtectStructure = True Then        MsgBox "工作簿有保护,工作表无法排序。"        Exit Sub    End If    Application.ScreenUpdating = False    aData = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row)    intCount = Sheets.Count '所有工作表的数量    Set shtAct = ActiveSheet '当前工作表    For i = 1 To UBound(aData) '遍历名单        strName = aData(i, 1) '工作表名称        Err.Clear '错误状态初始化        Set sht = Sheets(strName)        If Err.Number Then '试错法判断工作簿是否存在相关工作表            strErr = strErr & "," & strName        Else            '移动到最后一个工作表之后            sht.Move after:=Sheets(intCount)        End If    Next    If strErr <> "" Then        MsgBox "以下工作表名称工作簿中不存在" & vbCr _                & Mid(strErr, 2)    Else        MsgBox "排序完成。"    End If    shtAct.Select '回到操作表    Application.ScreenUpdating = TrueEnd Sub


代码详细解析见注释,概要解释如下▼

第11行代码将A列的数据存入数组aData。

第14至第24行代码遍历数组。依次将相关工作表名移动到最后一张工作表之后——听说每个人都有一个梦想,做一名人民教师,为的不是教书育人,而是点名扔粉笔头。代码运行的场景大概就是这样:你化身人民教师,先将工作表排成一排,让他们按身高或亲疏依次站到排尾,也就实现有序排列……



第18行代码使用试错法判断当前工作簿是否存在相关工作表名称,该方法我们在如何遍历工作表中也详细解释过了……时至今日,不用多说,你也应该知道那一章的知识点对工作表对象有多么重要,不管是我们之前分享过的工作表的新建、删除,现在分享的排序,还是以后分享的更名、汇总、加密破密等,多少都有那一章知识点的影子……

挥挥手,明天再见。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何按字段名称批量汇总多个分表成总表?
如何把excle中的工作表拆分单个的文件(全部或者单个)
完全手册Excel VBA典型实例大全:通过368个例子掌握
如何快速将整个工作簿的公式转换为数值?
如何一键生成带超链接的工作表目录?
公式转换成数值格式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服