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

  • Share This
Hugh West

要在Excel中用以下方法进行排序 VBA ,你需要应用 范围.排序 在这篇文章中,我们将向你展示如何使用 对该列进行排序 在Excel中用 范围.排序 的方法 VBA .

下载工作手册

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

用VBA对列进行排序.xlsm

Excel VBA中的Range.Sort方法

范围.排序 方法在 VBA 在Excel中对一个值的范围进行排序。 这里 范围 是一个对象变量,它指定了我们想要的单元格范围。 按升序或降序排序。

以下是你在使用该方法时需要了解的参数。

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

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

在本节中,你将知道如何 对有或无标题的单列进行排序 , 有或无标题的多列 以及如何 只需双击某一列的标题即可进行排序 在Excel中。

1.在Excel中嵌入VBA对无标题的单列进行排序

如果你想 对单列进行排序 在你的Excel工作表中用 VBA 代码,然后按照下面的步骤操作。

这是我们的列,我们将用它来排序 VBA 代码。

步骤。

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

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

  • 复制以下代码并将其粘贴到代码窗口。
 Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

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

在这里。

  • Key1:=Range("B5") → 指定的 B5 来让代码知道哪一列要排序。
  • Order1:=xlAscending → 指明顺序为 xlAscending 如果你想对该列进行降序排序,那么请编写 xlDescending 而不是。
  • 标题:= xlNo → 因为我们的列没有任何标题,所以我们用 xlNo 选择。

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

你会看到,你的栏目现在是 按升序排序 .

注意,这里我们手动定义了数据范围为 范围("B5:B15") .

如果你想通过添加或删除数值来改变数据,你可以实现以下代码,它可以根据数据集中的单元格自动更新。

 Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub 

请注意,不需要再手动定义范围,而是通过 范围("B5:B15") ,我们写道。 范围( "B5", Range("B5"). End(xlDown)) .

这将根据该列中最后一个连续填充的单元格进行排序。 如果有空白单元格,数据将只考虑到第一个空白单元格。

阅读更多:VBA在Excel中对表进行排序(4种方法)

2.插入VBA宏来对带有标题的单列进行排序

在上一节中,我们有一个没有标题的单列数据集,但现在我们有了 a 列,有一个标题 .

这一次,我们将学习如何用以下方法进行分类 VBA宏 .

步骤。

  • 与之前的方法一样,打开 Visual Basic编辑器 开发商 选项卡和 插入 a 模块 在代码窗口中。
  • 在代码窗口,复制以下代码并粘贴。
 Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub 

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

在这里。

  • Key1:=Range("B5") → 指定的 B5 来让代码知道哪一列要排序。
  • Order1:=xlDescending → 这一次我们将以降序排序,所以指定的顺序为 xlDescending .
  • 标题:= xlYes → 因为这次我们的列有一个标题,所以我们用 xlYes 选择。

  • 运行 这个代码,你将得到 以降序排序的标题列 .

阅读更多。 如何在Excel中用VBA对ListBox进行排序(完整指南)

类似的阅读。

  • 如何在Excel中对IP地址进行排序(6种方法)
  • [已解决!]Excel排序不工作(2种解决方案)
  • 如何在Excel中添加排序按钮(7种方法)
  • 在Excel中使用VBA对范围进行排序(6个例子)
  • 如何在Excel中按名称排序(3个例子)

3.VBA Macro对有或无标题的多列进行排序

你也可以 用VBA代码在你的数据集中对多列进行排序。

步骤。

  • 如前所述,开放 Visual Basic编辑器 开发商 选项卡和 插入 a 模块 在代码窗口中。
  • 在代码窗口,复制以下代码并粘贴。
 Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With 结束 Sub 

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

在这里。

.SortFields.Add Key:=Range("B4"), Order:=xlAscending

.SortFields.Add Key:=Range("C4"), Order:=xlAscending

通过这两条线,我们定义了 细胞B4 C4 来分类 两个与之相关的栏目 升序 .

由于我们的数据集有标题,所以我们指定了 标题 = xlYes ,否则我们就会写成 标题 = xlNo 在代码里面。

  • 运行 这个代码,你将得到 以升序方式排序的标题列 .

4.Excel中通过双击页眉对数据进行排序的宏程序

如果你想轻松地对数据进行排序,只要通过 双击标题 ,你可以用 VBA 代码。

步骤。

  • 右键点击 关于 纸张标签 .
  • 从出现的选项列表中,点击 查看代码 .
  • 将出现代码窗口,复制以下代码并将其粘贴到那里。
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.D15").Sort Key1:=iRange, Header:=xlYes End If 结束 Sub 
  • 拯救 的代码。

  • 现在回到你感兴趣的工作表,如果你 双击标题 你会看到栏目正在重新组织。

阅读更多:如何在Excel中对数据进行排序和过滤(一个完整的指南)。

需要记住的事情

  • 你可以创建一个命名的单元格区域,并在你传递一个单元格引用的范围时使用它来代替。 分类 例如,如果你想对范围进行排序 A1:A10 ,而不是每次都在代码里面传递它,你可以创建一个命名的范围,比如说" 排序范围 ",并将其与 范围.排序 方法,如 Range("SortRange") .
  • 如果你不确定你的数据集是否有头文件,你可以让系统通过使用 xl猜想 参数。

总结

这篇文章告诉你如何 对该列进行排序 在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.