Excel VBA自定义序列排序

Excel VBA实例 专栏收录该内容
26 篇文章 3 订阅

在这里插入图片描述
图1 待排序数据集
在图1中所示的数据集中,如果希望按单元格区域E2:E6所列序列进行排序,需要先使用AddCustomList方法为应用程序添加自定义序列,示例代码如下。

Sub SortByLists()
     Dim avntList As Variant, lngNum As Long
     avntList = Range("E2:E6")
     Application.AddCustomList avntList
     lngNum = Application.GetCustomListNum(avntList)
     Range("A1").Sort Key1:=Range("A1"), _
         Order1:=xlAscending, Header:=xlYes, _
         OrderCustom:=lngNum + 1
     Application.DeleteCustomList lngNum
 End Sub

在这里插入图片描述
图2 排序结果

第4行代码通过Application对象的AddCustomList方法为应用程序添加一个自定义序列。AddCustomList方法为自定义自动填充(或自定义排序)添加自定义列表,其语法格式如下。

AddCustomList(ListArray, ByRow)

其中,参数ListArray是必需的,可以为字符串数组或Range对象。参数ByRow是可选的,仅当 ListArray 为 Range 对象时使用。如果为 True,则使用区域中的每一行创建自定义列表;如果为 False,则使用区域中的每一列创建自定义列表。如果省略该参数,并且区域中的行数比列数多(或者行数与列数相等),则 Microsoft Excel 使用区域中的每一列创建自定义列表。如果省略该参数,并且区域中的列数比行数多,则 Microsoft Excel 使用区域中的每一行创建自定义列表。

如果要添加的列表已经存在,则AddCustomList方法不起作用。

第5行返回avnList数组在自定义序列中的序号。

第6行使用Sort方法对当前数据排序,其中Sort的参数指定了第1关键字Key1,默认为升序排列,同时设置包含标题,并且指定按新添加的自定义序列索引号排序。

注:参数OrderCustom指定在自定义排序次序列表中的基于1的整数偏移,在指定该参数时需在自定义序列号基础上加1。

第9行代码使用DeleteCustomList方法删除新添加的自定义序列。

微信公众号:VBA168

淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

关注微信公众号,每天及时接收Excel VBA经典示例讲解。

淘宝店铺提供Excel定制服务。

祝你工作和学习更轻松!

  • 2
    点赞
  • 0
    评论
  • 6
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

snail一路向前

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值