全民一起VBA实战篇 专题2 第四回 排序规则能由自己决定 数组赋值可用Array化简
相关知识点:
Range.Sort: VBA 内置的排序方法,15个参数。(缺点只有3个关键字排序)
(Key1,Order1,Type,Key2,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Orientation,SortMethod,DataOption1,DataOption2,DataOption3)
OrderCustom 自定义排序规则,自定义规则的位置序号+1,即采用的排序条目序号+1,因为1代表不使用自定义排序,普通排序;2代表第一个自定义序列;3代表第二个自定义序列……n+1代表第n个自定义规则。
注意:需要排序的序列关键字必须与自定义序列的关键字一致才可以排序,剩余的可能会默认排序。
VBA中自定义序列的标准写法:
- 使用Application.AddCustomList添加规则(序列)
- 在Range.Sort中设定Ordercustom为该序列的编号+1
- 使用Application.DeleteCustonList在Execl中删除该序列,恢复用户在运行VBA之前设置。
Application.CustomListCount属性:代表当前Execl中全部自定义序列的总数。
Array(x1,x2,x3,……):生成一个数组,第一个元素是x1,第二个是x2……可以用该函数方便的给一个动态数组赋值。比如:a=Array(3,5,7,8.10.12)
例1 按照自定义排序汉字大写数字排序(依赖于电脑是否有此规则和顺序)
Sub demo()
Dim r as Range
Set r=Range(“b1:b7”)
r.sort key1:=cells(1,2), ordercustom:=10 ‘自定义规则的位置按照1234……排序的序号+1
End Sub
例2 按照自定义排序汉字大写数字排序(添加自定义序列在单元格里)
Sub demo2()
Dim r as Range
Application.AddCustomList Worksheets(1).Range(“d10:d16”) ‘指定Range对象作为序列
Set r=Range(“b1:b7”)
r.sort key1:=cells(1,2), ordercustom:=application.CustomListCount+1 ‘编号+1
application.DeleteCustomList Application.CustonListCount ‘删除自定义序列,现在编号已经变了不需+1
End Sub
例3 按照自定义排序汉字大写数字排序(添加自定义序列在程序里)
Sub demo3()
Dim r as Range,mylist(7) ‘动态数组因此不可以提前赋值应为mylist()或者是变体类型变量
Mylist(0)=”壹”: Mylist(1)=”贰”: Mylist(2)=”叁”: Mylist(3)=”肆”
Mylist(4)=”伍”: Mylist(5)=”陆”: Mylist(6)=”柒”: Mylist(7)=”捌”
‘以上红色数组赋值可以直接写:
‘mylist=Array(“壹”,”贰”,”叁”,”肆”,”伍”,”陆”,”柒”,”捌”)
Application.AddCustomList mylist ‘指定数组作为序列
Set r=Range(“b1:b7”)
r.sort key1:=cells(1,2), ordercustom:=application.CustomListCount+1 ‘编号+1
application.DeleteCustomList Application.CustonListCount ‘删除自定义序列,现在编号已经变了不需+1
End Sub
- 全民一起VBA实战篇 专题2 第五回 多键排序无非多次循环,独特功能还需独自开发
- 一起谈.NET技术,数组排序方法的性能比较(中):Array.Sort<T> 实现分析
- array调用排序,返回的数组要 重新赋值,
- 学习日志 全民一起VBA提高篇 第四回 日期类型穿梭岁月 时间函数算尽光阴
- 排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。用这些排序时,都可以写自己的排序规则。
- 多维数组排序 array_multisort()
- ARRAY专题一:数组(ARRAY)与ARRAYLIST的主要区别:效率、类型识别和PRIMITIVE TYPE。
- leetcode 题解:Remove Duplicates from Sorted Array II(已排序数组去三次及以上重复元素)
- LeetCode-88:Merge Sorted Array (合并两排序数组)
- 现有一个不规则数组int[] x={1,5,3,8,6,7,2,..,n } 请设计一个方法,获取到数组x中所有的偶数并赋值到一个新的数组
- leetCode 33.Search in Rotated Sorted Array(排序旋转数组的查找) 解题思路和方法
- 153.寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)
- 足以应付一切的水仙花数,字母交叉问题,数组排序去重复,今天get到一点点,首先一道题莫名其妙地改对了然后明白了自己思路是对的但是不会写代码 还是什么用都没有
- Array 数组的排序 sort
- 6-2 array 数组的赋值及遍历
- php-Arrays 函数-array_multisort-对多个数组或多维数组进行排序
- 学习日志 全民一起VBA提高篇 第八回 文本字符也是数字,编码函数两界穿梭
- 26 删除排序数组中的重复项 Remove Duplicates from Sorted Array
- JNI对数组赋值排序,创建数组并返回给Java
- [LeetCode]14. Remove Duplicates from Sorted Array排序数组去重