用VBA在Excel中对表格进行排序(4种方法)

  • Share This
Hugh West

实施 VBA宏 是在Excel中运行任何操作的最有效、最快速、最安全的方法。 在这篇文章中,我们将告诉你如何在 对该表进行排序 在Excel中用 VBA .

下载工作手册

你可以从这里下载免费的练习Excel工作簿。

用VBA对表进行排序.xlsm

在Excel中实施VBA对表格进行排序之前需要知道的事情

有一些参数是你在使用时必须经常使用的。 分类 的方法 VBA 所以在这里我们将讨论一些参数,使你在写代码时熟悉。

参数 必备/可选 数据类型 描述
钥匙 可选 变体 指定要进行排序的范围或列的值。
秩序 可选 XlSortOrder 指定将进行排序的顺序。
  • xlAscending = 按升序排序。
  • xlDescending = 按降序排序。
标题 可选 是的,我不知道 指定第一行是否包含页眉。
  • xlNo = 当该列没有任何标题时;默认值。
  • xlYes = 当列有标题时。
  • xl猜想 = 让Excel确定标题。

在Excel中实施VBA对表格进行排序的4种方法

本节将告诉你如何 对Excel表格进行排序 通过考虑 价值、颜色、图标 多列 VBA 代码。

1.在Excel中嵌入VBA以按值排序表

考虑到下面的例子,我们将 根据数值对该表进行排序 存在于 马克 列中按降序排列。

步骤。

  • 新闻 Alt + F11 在你的键盘上,或进入标签 开发人员 -> Visual Basic 打开 Visual Basic编辑器 .

  • 在弹出的代码窗口中,从菜单栏中,点击 插入-> 模块 .

  • 复制以下代码并将其粘贴到代码窗口。
 Sub SortTableValue() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTBL") Set iColumn = Range("SortTBL[Marks]") With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn, SortOn:=xlSortOnValues, Order:=xlDescending .Header = xlYes .Apply End With End Sub 

你的代码现在可以运行了。

在这里。

  • 排序TBL → 指定了表的名称。
  • 排序TBL[标记] -> 指定了要排序的表的列名。
  • Key1:=iColumn → 指定列的范围,让代码知道要对表中的哪一列进行排序。
  • Order1:=xlDescending → 指明顺序为 xlDescending 如果你想对该列进行升序排序,那么请编写 xlAscending 而不是。
  • 标题:= xlYes → 由于这个表格中的列有一个标题,所以我们用 xlYes 选择。

  • 新闻 F5 在你的键盘上选择"",或从菜单栏中选择 运行-> 运行Sub/UserForm 你也可以直接点击 小的播放图标 子菜单栏中的 "运行宏"。

你会看到,你的表格中的列现在是 按降序排序 .

阅读更多:如何在Excel中按数值排序(5种简单方法)

2.插入VBA宏,对表进行多列排序

你也可以 对多列的表格进行排序 在Excel中用 VBA 宏观。

从上表中,我们将对各列进行排序 命名 部门 按升序排列。

步骤。

  • 与之前的方法一样,打开 Visual Basic编辑器 开发商 选项卡和 插入 a 模块 在代码窗口中。
  • 在代码窗口,复制以下代码并粘贴。
 Sub SortTable() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("TableValue") Set iColumn1 = Range("TableValue[Name]") Set iColumn2 = Range("TableValue[Department]" With iTable.Sort .SortFields.Clear .SortFields.Add Key:=iColumn1, Order:=xlAscending .SortFields.Add Key:=iColumn2, Order:=xlAscending.Header = xlYes .Apply End With End Sub 

你的代码现在可以运行了。

在这里。

  • 表值 → 指定了表的名称。
  • 表值[名称] -> 指定了要排序的表格的第一列名称。
  • 表值[部门] -> 指定了要排序的表格的第二列名称。
  • Key1:=iColumn1 → 指定列的范围,让代码知道需要对表中的第一列进行排序。
  • 键1:=iColumn2 → 指定列的范围,让代码知道表中的第二列需要被排序。
  • Order1:=xlAscending → 指明顺序为 xlAscending 如果你想以降序排序,那么就写成 "降序"。 xlDescending 而不是。
  • 标题:= xlYes → 由于该表的列有标题,所以我们用 xlYes 选择。

  • 运行 这个代码,你将得到两个 表的列排序 按升序排列。

阅读更多。 如何在Excel中自动排序多列(3种方法)

类似读物

  • 如何在Excel中对独特的列表进行排序(10种实用方法)
  • 用Excel VBA对数组进行排序(包括升序和降序)
  • 如何在Excel中对数据进行排序和过滤(完整指南)
  • 数据变化时Excel自动排序(9个例子)
  • Excel中的随机排序(公式+VBA)

3.在Excel中实施按单元格颜色排序的宏程序

你也可以 根据单元格颜色对表格进行排序 它所包含的。

以上述表格为例,我们将向你展示如何根据这个表格所拥有的颜色进行排序。

步骤。

  • 如前所述,开放 Visual Basic编辑器 开发商 选项卡和 插入 a 模块 在代码窗口中。
  • 在代码窗口,复制以下代码并粘贴。
 Sub SortTableColor() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("SortTable") Set iColumn = Range("SortTable[Marks]") With iTable.Sort.Clear .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor) .SortOnValue.Color = RGB(248, 203, 173) .SortFields.Add(Key:=iColumn,.SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(198, 224, 180) .SortFields.Add(Key:=iColumn, Order:=xlAscending, SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(180,198,231) .Header = xlYes.Apply End With End Sub 

你的代码现在可以运行了。

这里的 RGB 我们提供的代码,你可以找到它或任何其他的 RGB 按照下面的GIF,你可以得到你想要的代码。

  • 只需点击 有色细胞 .
  • 首页 标签,点击 填充颜色旁边的箭头 然后选择 更多颜色 你会看到 RGB 中的代码。 定制 出现的选项卡 颜色 弹出框。

  • 运行 这段代码,你的表格将是 根据颜色进行排序 .

阅读更多。 如何在Excel中按颜色排序(4个标准)

4.应用VBA对Excel表按图标排序

假设数据集的表格有图标,以提高可读性。 你可以将 基于图标的表格 在Excel中用 VBA 宏观。

看看上面的数据集,在这里,表格中的数字值旁边有图标。 符号 列,这样我们就可以了解哪个学生的成绩好,哪个学生的成绩不好,哪个学生的成绩一般。

注意,如果你不知道如何在单元格内插入一个图标,你可以简单地用 条件性格式化 在Excel中的功能。

  • 选择 整个范围或列。
  • 转到 条件性格式化 -> 图标集 然后从选项中挑选你想要的任何图标集。

采取措施,以 基于图标的表格排序 下文给出了答案。

步骤。

  • 开放式 Visual Basic编辑器 开发商 选项卡和 插入 a 模块 在代码窗口中。
  • 在代码窗口,复制以下代码并粘贴。
 Sub SortTableIcon() Dim iSheet As Worksheet Dim iTable As ListObject Dim iColumn As Range Set iSheet = ActiveSheet Set iTable = iSheet.ListObjects("IconTable") Set iColumn = Range("IconTable[Marks]") With iTable.Sort.Clear .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon) .SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows) ,.SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(3) .SortFields.Add(Key:=iColumn, Order:=xlDescending, SortOn:=xlSortOnIcon)。Order:=xlDescending, SortOn:=xlSortOnIcon).SetIcon Icon:=ActiveWorkbook.IconSets(xl5Arrows).Item(5) .Header = xlYes .Apply End With End Sub 

你的代码现在可以运行了。

在这里。

  • xl5Arrows -> 我们挑选了 一套5支箭 中的选项。 条件性格式化 .
  • 项目 (1) -> 指定了 首先 箭头图标的类型。
  • 项目 (2) -> 指定了 第二 箭头图标的类型。
  • 项目 (3) -> 指定了 第三次 箭头图标的类型。
  • 项目 (4) -> 指定了 第四次 箭头图标的类型。
  • 项目 (5) -> 指定了 第五次 箭头图标的类型。

  • 运行 这段代码,该表将是 根据图标进行排序 .

阅读更多:如何在Excel中自动排序表(5种方法)。

总结

这篇文章告诉你如何 对该表进行排序 在Excel中 VBA 我希望这篇文章对你非常有益。 如果你对这个主题有任何疑问,请随时提问。

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.