ad

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_提升工作效率_1.6.3 使用 Sort 对象排序

网友投稿 59 2023-11-07

【摘要】 本书摘自《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》一书中第1章,第6节,陈锡卢、李应钦著。

1.6.3 使用 Sort 对象排序

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_提升工作效率_1.6.3 使用 Sort 对象排序

使用Range.Sort 方法排序时,会感觉某些功能和在 Excel 界面使用的有些差距。例如,不 能用字体颜色、底色、图标排序或者按照已排序的效果继续排序,而使用Range.Sort方法只能 对值进行排序。

其实这些功能都需另外一个对象才能进行操作——Sort 对象。该对象属于 Worksheet 对象 的子对象。先来看下它的方法与属性及其作用,如表1-13 所示。

创建新的排序字段,并返回一个 SortFields 对 象

Worksheet.Sort.SortFields.Add (Key,SortOn,Order,CustomOrder,DataOption)

SortFields.Add 方法中的Key参数用于指定排序的键值,该参数必需为Range 对象。

SortOn 参数则是指定排序数据的类型,例如单元格颜色、字体颜色、图标和值4个类型, 其对应XlSortOn 枚举常量。

Order 参数对应Range.Sotr 方法的Order 参数的升降序。

CustomOrder 参数对应OrderCustom 参数的自定义序列。

DataOption 参 数 对 应Range.Sotr 方法的 DataOptionl~DataOption3 参数,是否将文本数字

等指定方式排序。

SortFields.Add 方法除了Key 参数是必需的,其他参数都可选的。

ActiveSheet.Sort.SortFields.Clear ‘ 清除所有 SortFields 对象

新建 一 个 SortFields 对象(该集合存储工作簿、列表和自动筛选的排序状态)

ActiveSheet.Sort.SortFields.Add Key:=Range("B2"),SortOn:=XISortOnValues,_

Order:=XIAscending,DataOption:=XISortNormal,_

CustomOrder:=" 营销部,出口部,采购部,行政部,外务部,后勤部,外勤部,统计部,生产一车间,

生产二车间"

该语句为以第2列为排序列,并按照自定义列表升序排序的集合,最后存入 SortFields 对象

无言:上面的示例创建了一个Worksheet.Sort方法的SortFields属 性 (SortField对 象) ,创 建 后只有使用Sort.Apply 方法后才可按照上面的排序要求排序。

皮蛋:不设置Sort.Apply 方法就不能进行最后的排序操作?

无言:是的,Sort.Appl y方法就通知Excel, 有这句话才执行排序。

皮蛋:那来个完整的教程示例。

新建单列 Sort 对象排序如代码1-31 所示。

008| .Header =xlYes

009| .MatchCase =False

010| .Orientation =xITopToBottom

011| .SortMethod =xIPinYin

012| .Apply

0131 End With

014| End With

015|End Sub

代码1-31示例过程在激活表新建一个排序对象 (SortFields), 并设置排序规则后采用

Sort 对象执行排序操作。

(1).Sort.SortFields.Clear语句为清除当前工作表中存储的 SortFields 对象。

(2).SortFields.Add 语句中的Columns(2) 指的是当前表中的第2列采用升序排序, XISortOnValues 则为按单元格的值排序,如果有图标、字体颜色等可以参考XISortOn类型常量; 其中 CustomOrder自定义序列直接用字符串赋值。

(3)新建 SortFields 对象后设置 Sort 对象的几个方法和属性: SetRange 方法为设置要 排序的区域,以A1 的连续区域作为排序区域,并将Header参数赋值为Xlyes, 说明区域中 存在标题且不参与排序(也赋值XIGuess让系统自行判断(不推荐)); Orientation 赋值为 XITopToBottom,等于按列排序,如果要设置为按行排序则可以赋值为XILeftToRight 即可,最 后以 Apply 结尾执行排序。

无言:代码1-31示例过程中.Apply是最重要的语句,如果不存在该语句则不会进行排序, 所以Sort对象中最重要的方法参数有3个必需存在的属性/方法: SetRange (区域)、Header

(标题)、Apply(执行)。

? 皮蛋:嗯,明白了。如果要多列排序要怎么办呢?

无言:这个和上面的Range.Sort方法的一样,只能通过书写多列排序规则再执行排序,也 就是代码1-31示例过程的部分重复书写。具体如代码1-32所示。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:跟着一起学《Excel VBA跟卢子一起学 早做完 不加班 基础入门版》_1.2 excel一键操作完成的来源
下一篇:《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_2.6.3 UrlConf 的路由分发
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×