Table of contents
知道如何在Excel中使用VBA对范围进行排序,在我们的日常计算中是省时省力的。 虽然Excel默认提供了一个排序工具。 通过使用 范围.排序 方法 我们可以获得几个参数来对一个数据集进行排序,而且比平时有更多的选择。
下载实践工作手册
下载这本练习手册,在阅读本文时进行练习。
Excel.xlsm中的排序范围Excel VBA中Range.Sort语句的介绍
目标: 对一个单元格数据的范围进行排序。
语法。
表情 .排序 ( 钥匙1 , 秩序1 , 钥匙2 , 类型 , 秩序2 , 钥匙3 , 秩序3 , 标题 , 秩序定制 , MatchCase , 适应情况 , 排序方法 , 数据选项1 , 数据选项2 , 数据选项3 )
在这里, 表情 代表一个 范围 对象,即一个单元格、一行、一列,或一个单元格的选择。
争论。
我们需要提供 三 的主要参数。 范围.排序 方法,他们是-
钥匙 - 我们需要对单列或多列的单元格进行排序的范围。
秩序 - 指定升序或降序的排序顺序。
标题 - 声明要排序的列是否有一个标题。
在Excel VBA中对范围进行排序的6个例子
在本文中,作为一个数据集,我们将使用一个带有出生日期和年龄的人名列表。 我们将应用不同的方法对数据集进行排序。 让我们通过文章和练习来掌握这些方法。
1. 用Excel VBA对单列范围进行排序
在这个例子中,我们将 分类 人从 最古老的 至 最年轻的 让我们按照步骤来使用 范围 . 分类 方法 这将 分类 的 年龄栏 在 降序 .
步骤。
- 转到 开发者标签 在 Excel功能区 至 点击 关于 视觉基础
- 然后选择 模块选项 从 插入标签 打开一个 新模块 .
现在,我们将把我们的代码放到 分类 的 年龄 列的范围。
1.1 带标题的栏目
把下面的代码放在视觉代码编辑器中。
Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub
新闻 F5 或点击 运行 按钮,以 执行 的代码。
解释一下。
在上述代码中,我们把-
表达式(Range对象)=Range("D4:D11")。 的 年龄栏 与一个 页眉 在 细胞D4 和 价值 在 D5:D11。
键 = Range("D4"); 的 钥匙 为 排序。
Order= xlDescending; 因为我们要 分类 价值从 最大的 至 最低的 我们设定 排序顺序 作为 递减。
标题=xlYes。 在下面的屏幕截图中,我们可以看到 数据集 有一个 页眉 为每个 列。
1.2 无标题的栏目
把下面的代码放在视觉代码编辑器中。
Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub
新闻 F5 或点击 运行 按钮,以 执行 的代码。
解释一下。
在上述代码中,我们把-
表达式(Range对象)=Range("D4:D10")。 的 年龄栏 没有 页眉 有 价值 在 D4:D10。
键 = Range("D4"); 的 钥匙 为 排序。
Order= xlDescending; 因为我们要 分类 价值从 最大的 至 最低的 我们设定 排序顺序 作为 递减。
标题 =xlNo; 在下面的屏幕截图中,我们可以看到 数据集 没有 头部。
相关内容。 如何在Excel中对列进行排序而不混入数据(3种方法)
2. 使用VBA代码对Excel中的多列范围进行排序
为了显示排序在 多列 ,我们需要 修改 我们的 数据集 一点点,我们 插入式的 一些 新 行数 在修改后的数据集中,行 7, 8, 和 9 有 相同 的值。 出生日期 和 年龄 但 三个不同的名字 .这些 名称 是 不 在任何 特定订单 的上升或下降。
在这个例子中,我们将把名字排列在 升序 让我们在visual basic编辑器中运行以下代码。
Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub
解释一下。
在上面的截图中,我们可以看到,在 D列 是 排序的 在 下降 秩序。 我们添加了 还有两个参数 在我们之前的代码中。
Key2: =Range("B4") , 键来对名字进行排序。
Order2: =xlAscending ,在 秩序 为 做空的名字 .
因此,我们看到 名称 在 第7、8和9行 现在是 按字母顺序排列 排序在 升序 秩序。
在下面的截图中,我们改变了 价值 的。 订单2参数 至 分类 的 名称 在 下降 秩序。
阅读更多。 如何在Excel中对多列进行排序(5种快速方法)
3. 在Excel VBA中双击标题对列范围进行排序
Excel的默认排序功能不允许 排序值 的列,由 双击 的 列标题 但使用VBA代码我们可以实现它。 让我们通过应用以下代码来说明这一功能。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub
在这段代码中,我们使用了 BeforeDoubleClick事件 至 禁用通常的双 - 点击 这是要启动 编辑 在这个事件运行时,如果我们 双 - 点击 在任何一个 列标题 它将列数据排序在 升序 .
阅读更多。 用VBA在Excel中对列进行排序(4种方法)
类似的阅读。
- 如何在Excel中添加排序按钮(7种方法)
- 在Excel中对唯一的列表进行排序(10种实用方法)
- 如何在Excel VBA中使用排序功能(8个合适的例子)
- 在Excel中对重复数据进行排序(列和行)
- Excel中的随机排序(公式+VBA)
4. 使用Excel VBA根据背景颜色对列范围进行排序
我们可以对一列中的单元格范围进行排序 基于 对他们的 背景色 要做到这一点,我们需要 增加 a 参数 名为 排序上 其中有一个 值 xlSortOnCellColor 为了演示排序,我们首先设定不同的 背景颜色 到我们的行 数据集 .
然后在visual basic代码编辑器中 拷贝 以下代码,并按 F5 来运行它。
Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10" ) .Apply End With 结束 Sub
在下面的截图中,我们可以看到 分类的数据集 基于他们的背景颜色。
解释一下。
- 在这个例子中,我们把 工作表 " 背景 "。 因此,在代码中,我们把" 背景 "作为我们的 活动工作表的名称。
- 我们设定 B4 作为 钥匙 和 B4:D10 作为 范围 该代码将根据密钥对数据进行排序。
- 由于我们没有指定 标题参数 ,代码运行为默认的 没有标题。
- 我们设置了 秩序 参数为 升序的。 所以它把数据从低到高排序。 .
阅读更多。 如何在Excel中按颜色排序(4个标准)
5. 应用VBA代码根据字体颜色对列范围进行排序
通过应用VBA代码,我们可以根据数据集上的 字体颜色 首先,我们需要 不同行的颜色 来说明这个例子。
应用下面的代码对数据集进行排序,其依据是 字体颜色。
Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add(Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort.SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub
解释一下。
- 在这个例子中,我们把 工作表 " 字体颜色 "。 因此,在代码中,我们把" 字体颜色 "作为我们的 活动工作表的名称。
- 我们设定 B4 作为 钥匙 和 B4:D11 作为 范围 该代码将根据密钥对数据进行排序。
- 在这个例子中,我们还指定了标题参数为 xlYes .
- 在这里,我们设置了 秩序 参数为 升序的。 所以它把数据从低到高排序。 .
- 的价值。 排序上 参数为
- ǞǞǞ 方向参数 持有值 xlTopToBottom 因为它是强制性的。
- 颜色 排序的依据是RGB术语,它的值从 0 至 255 .
阅读更多。 如何在Excel中对两列进行排序匹配(包括精确匹配和部分匹配)?
6. 用Excel VBA改变排序范围的方向
使用 方向 参数,我们可以改变我们想对数据进行排序的方式。 在这个例子中,我们有 换位的 我们的数据集以 分类 它 横向 .
让我们把下面的代码放到visual basic编辑器中,然后按F5键运行它。
Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub
在这里,我们 排序的 的数据为基础。 年龄排行 在 升序 从的订单 左边 至 对 在代码中,我们设置了 方向 参数为 xlSortRows .
相关内容。 如何在Excel中自动排序多列(3种方法)
需要记住的事情
- ǞǞǞ 参数SortOn 我们用来 分类 列的范围,基于 背景色 和 字体颜色 只能由一个 工作表对象 我们不能使用它与一个 范围对象 .
- ǞǞǞ BeforeDoubleClick事件 只在以下情况下对数据进行排序 升序的。
总结
现在,我们知道了如何在Excel中使用VBA对范围进行排序。 希望它能鼓励你更有信心地使用它。 有任何问题或建议,不要忘记把它们放在下面的评论框中。