前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA示例:分块排序

VBA示例:分块排序

作者头像
fanjy
发布2024-04-12 19:47:47
790
发布2024-04-12 19:47:47
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA

如下图1所示的示例工作表,每一个数据块之间相隔一个空行。

图1

现在想要对这些数据块分别进行排序,也就是说,示例中第2至4行的数据排序,第6至11行的数据排序,各不相关。排序的主关键字是列C,次关键字是列A。

可以使用下面的VBA过程:

代码语言:javascript
复制
Sub SortRanges()
 Const WKS = "Sheet2"
 Dim last_row As Long
 Dim i As Integer
 Dim first_row As Long
 Dim next_row As Long
 
 i = 1
 
 With Sheets(WKS)
   last_row = .Cells(.Rows.Count, 1).End(xlUp).Row
   Do While True
     first_row = .Cells(i, 1).End(xlDown).Row
     next_row = .Cells(first_row, 1).End(xlDown).Row
     .Range("$A$" & first_row & ":$D$" & next_row).Sort _
       Key1:=.Range("C" & first_row), _
       Order1:=xlAscending, _
       Key2:=.Range("A" & first_row), _
       Order2:=xlAscending, _
       Header:=xlNo
     If next_row = last_row Then
       Exit Do
     End If
     i = next_row + 1
   Loop
 End With
End Sub

结果如下图2所示。

图2

过程中,假设数据所在的工作表名称为“Sheet2”,你可以根据实际情况修改。过程的关键在于划分数据块,找到数据块所在的首行和尾行,从而对其进行排序。

注:本示例代码整理自vbaexpress.com论坛,供有兴趣的朋友参考。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档