Table of contents
要在Excel中用以下方法进行排序 VBA ,你需要应用 范围.排序 在这篇文章中,我们将向你展示如何使用 对该列进行排序 在Excel中用 范围.排序 的方法 VBA .
下载工作手册
你可以从这里下载免费的练习Excel工作簿。
用VBA对列进行排序.xlsm
Excel VBA中的Range.Sort方法
范围.排序 方法在 VBA 在Excel中对一个值的范围进行排序。 这里 范围 是一个对象变量,它指定了我们想要的单元格范围。 按升序或降序排序。
以下是你在使用该方法时需要了解的参数。
参数 | 必备/可选 | 数据类型 | 描述 |
---|---|---|---|
钥匙 | 可选 | 变体 | 指定要进行排序的范围或列的值。 |
秩序 | 可选 | XlSortOrder | 指定将进行排序的顺序。
|
标题 | 可选 | 是的,我不知道 | 指定第一行是否包含页眉。
|
在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 我希望这篇文章对你非常有益。 如果你对这个主题有任何疑问,请随时提问。