小目标
学会使用VSTO880框架进行数组排序
视频讲解
VB.NET中一维数组排序
直接使用 array.sort 比VBA中方便
Brr=array.sort(arr)
VSTO880框架中VB.NET一维数组排序函数
有很多同学之前使用的是VBA175例中提供的排序函数,那么在引入Excel880VSTO框架后可继续使用 代码不用修改
Dim brr = ArraySortOne(arr, 0) '升序
另外我新增了自定义排序
'自定义排序
brr = ArraySortOne(arr, 0)
brr = ArraySortOne自定义(brr, {5, 1, 9})
Debug.Print(Join(brr, ","))
VSTO880框架中的VB.NET二维数组排序函数
二维数组排序在.NET中没有直接支持,需要自己写代码实现,对基础不太好的同学就比较难了,这里我在Excel880VSTO框架中把VBA175例数组排序模块移植了过来,可以继续方便的使用排序函数无需关心实现细节。
Dim Sheet4 = Sheets("多列排序")
Dim rng = Range("A1").CurrentRegion
Dim arr = Intersect(rng, rng.Offset(1)).Value '去掉首行
'第2列升序 空值排后面 与系统排序表现一致
Dim brr = ArraySortTwo(arr, 2, EnumSortType.SortSheetASC)
Sheet4.Range("K2").Resize(Ubound(brr), Ubound(brr, 2)).value = brr
'第2列升序 空值排前面
brr = ArraySortTwo(arr, 2, SortASC)
Sheet4.Range("K2").Resize(Ubound(brr), Ubound(brr, 2)).value = brr
'第2列降序
brr = ArraySortTwo(arr, 2, SortDESC)
Sheet4.Range("K2").Resize(Ubound(brr), Ubound(brr, 2)).value = brr
数组自定义排序
这里依然为大家增加了自定义排序函数 直接调用即可
Sub 二维数组自定义排序()
Dim Sheet4 = Sheets("多列排序")
Dim rng = Range("A1").CurrentRegion
Dim arr = Intersect(rng, rng.Offset(1)).Value '去掉首行
'第3列自定义排序
Dim 序列 = {"K", "J", "G", "M"}
Dim brr = ArraySortTwo(arr, 3, EnumSortType.SortASC) '先升序
brr = ArraySortTwo自定义(brr, 3, 序列)
Sheet4.Range("K2").Resize(Ubound(brr), Ubound(brr, 2)).value = brr
End Sub
作业:实现工作表排序
使用Excel880VSTO数组排序函数,在功能区实现一个工作表排序按钮
提示:获得工作表数组 进行排序 然后 依次移动到第一个工作表前
郑广学VSTO教程购买方式
淘宝下单地址(支持花呗)
郑广学VSTO课程云课堂网址
登陆后可免费试学