Excel VBA一行代码搞定分组排序

最近很多小伙伴都被分组排序所困扰,Excel没有现成的分组排序功能,想要这功能基本都是靠录制宏.但是一旦录制宏,你就可以看到一长串不知道用不用得上,又不敢随便删除的代码

录制宏虽然好用,但是很容易有坑,例如你录制一个排序的宏,会是下面这样
Excel VBA一行代码搞定分组排序_第1张图片
我数了下,31行代码.各种选择,清除,新增,选择,清除,新增.还带上了一些默认设置.既然默认,那实际上是可以不用显示出来的呗


SORT

实际上只需要一个sort方法就可以代替这31行代码

Excel VBA一行代码搞定分组排序_第2张图片

数据如上,假设需求是这样的

时间从新到旧,销售额从大到小.也就是可以一眼看出每天的销售额排序


常规操作分两步

  1. 降序销售额
  2. 降序时间

Excel VBA一行代码搞定分组排序_第3张图片

想让它自动排序的话,你得按以上步骤录制一段宏.然后你就可以看到类似于上面的31行代码.然鹅,实际1行代码就够了


在这里插入图片描述


如图所示的sort方法,可以看到最多可以设置3个字段并指定他们的升降序,其他的设置是例如:是否有标题,全半匹配blabla等辅助设置,不过基本上用不到.写完的整段代码如下

Sub Dan()
    Sheet3.Cells(2, 4).CurrentRegion.Sort key1:=Sheet3.Cells(2, 2), _
                                            order1:=xlDescending, _
                                            key2:=Sheet3.Cells(2, 4), _
                                            order2:=xlDescending
End Sub

为了便于观看,我加了3个换行,等价于下面1行代码

在这里插入图片描述


测试下运行效果

Excel VBA一行代码搞定分组排序_第4张图片
成功实现


你可能感兴趣的:(Excel,Excel,VBA)