Table of contents
本教程展示了如何通过使用VBA代码和工作簿管理器工具对Excel工作表按字母顺序快速排序。
微软Excel提供了许多快速简便的方法来按字母顺序排列列或行。 但在Excel中只有一种方法来重新排列工作表--将它们拖到工作表标签栏上的所需位置。 当涉及到在一个真正大的工作簿中按字母顺序排列标签时,这可能是一个漫长而错误的方法。 寻找一个节省时间的替代方法? 只存在两种:VBA代码或第三方工具。
如何用VBA将Excel中的标签按字母顺序排列
下面你将看到三个VBA代码例子,可以根据用户的选择对Excel工作表进行升序、降序和任一方向的排序。
暗示你有一些VBA的经验,我们将只概述将宏添加到工作表中的基本步骤。
- 在你的Excel工作簿中,按Alt + F11打开Visual Basic编辑器。
- 在左侧窗格中,右键单击 这本工作手册 ,然后点击 插入 > 模块 .
- 将VBA代码粘贴到代码窗口。
- 按F5来运行宏。
关于详细的步骤说明,请看如何在Excel中插入和运行VBA代码。
提示:如果你想保留宏以便进一步使用,请确保将文件保存为支持宏的Excel工作簿(.xlsm)。
另外,你也可以下载我们的《按字母顺序排列Excel标签》工作簿样本,如果有提示,就启用内容,并直接从那里运行所需的宏。 该工作簿包含以下宏。
- 标签上升 - 按字母顺序从A到Z对纸张进行排序。
- TabsDescending - 按照相反的顺序排列纸张,从Z到A。
- 按字母顺序排列标签 - 以升序或降序两个方向对工作表标签进行排序。
在你的Excel中下载并打开样本工作簿,打开你自己的工作簿,在其中你想按字母顺序排列标签,按Alt + F8 ,选择所需的宏,并点击 运行 .
按字母顺序将Excel标签从A到Z排序
这个小宏将当前工作簿中的工作表排列成 升序的字母数字顺序 首先是名字以数字开头的工作表,然后是从A到Z的工作表。
Sub TabsAscending() For i = 1 To Application.Sheet.Count For j = 1 To Application.Sheet.Count - 1 If UCase$(Application.Sheet(j).Name)> UCase$(Application.Sheet(j + 1).Name) Then Sheets(j).Move after:=Sheets(j + 1) End If Next Next MsgBox "标签已经从A到Z排序了。" End Sub从Z到A排列Excel标签
如果你想对你的工作表进行分类,在 递减的字母数字顺序 (Z到A,然后是带有数字名称的工作表),然后使用以下代码。
Sub TabsDescending() For i = 1 To Application.Sheet.Count For j = 1 To Application.Sheet.Count - 1 If UCase$(Application.Sheet(j).Name) <UCase$(Application.Sheet(j + 1).Name) Then Application.Sheet(j).Move after:=Application.Sheet(j + 1) End If Next Next MsgBox "标签已经从Z到A排序了。" End Sub按字母顺序升序或降序排列标签
这个宏让你的用户决定如何在一个给定的工作簿中对工作表进行排序,按字母顺序从A到Z或按相反的顺序。
由于Excel VBA中的标准对话框(MsgBox)只允许从少数几个预定义的按钮中选择,我们将创建我们自己的表单(UserForm),其中有三个自定义按钮。 从A到Z , Z到A ,以及 取消 .
为此,打开Visual Basic编辑器,右键单击 这本工作手册 ,然后点击 插入 > 用户表格 .给你的表格命名 排序从 ,并为其添加4个控件:一个标签和三个按钮。
接下来,按F7键(或双击表格),打开 编码 该代码拦截按钮的点击,并为每个按钮分配一个独特的标签。
取决于用户是否点击了 从A到Z 或 Z到A 按钮,按升序字母顺序(默认选择)或降序字母顺序对标签进行排序;或者关闭表单,在下列情况下不做任何操作 取消 这是通过以下VBA代码完成的,你可以通过通常的方式插入该代码 插入 > 模块 .
Sub AlphabetizeTabs() Dim SortOrder As Integer SortOrder = showUserForm If SortOrder = 0 Then Exit Sub For x = 1 To Application.Sheet.Count For y = 1 To Application.Sheet.Count - 1 If SortOrder = 1 Then If UCase$(Application.Sheet(y).Name)> UCase$(Application.Sheet(y + 1).Name) Then Sheets(y).Move after:=Sheets(y + 1) End If ElseIf SortOrder = 2 Then If UCase$(Application.Sheet(y).Name)<UCase$(Application.Sheet(y + 1).Name) Then Sheets(y).Move after:=Sheets(y + 1) End If End If Next Next End Sub Function showUserForm() As Integer showUserForm = 0 Load SortOrderForm SortOrderForm.Show (1) showUserForm = SortOrderForm.Tag Unload SortOrderForm End Function如果你对VBA还不是很熟悉,你可以简单地下载我们的按字母顺序排列标签的样本工作簿,在你的Excel中打开它,同时打开你自己的文件,在其中对标签进行分类,并运行 按字母顺序排列标签 你的工作簿中的宏。
选择首选的排序顺序,例如。 从A到Z ,并观察结果。
提示:通过VBA,你也可以创建Excel工作表的副本,代码见这里:如何用VBA复制Excel中的工作表。
如何用Ultimate Suite对Excel标签按字母顺序排序
我们的Excel终极套件的用户不需要摆弄VBA,他们有一个多功能的工作簿管理器供他们使用。
有了这个工具添加到你的Excel功能区,按字母顺序排列标签只需点击一个按钮就能完成,这完全是应该的!
如果你想探索这个和其他70多个专业的Excel工具,可以在这里下载我们的终极套件的试用版。
我感谢你的阅读,希望下周在我们的博客上看到你!