學會使用VSTO880框架進行數(shù)組排序
1.8 解決VBA數(shù)組排序到VB.NET的平穩(wěn)過渡
請點擊 閱讀原文
直接使用 array.sort 比VBA中方便
Brr=array.sort(arr)
Dim brr = ArraySortOne(arr, 0) '升序
'自定義排序
brr = ArraySortOne(arr, 0)
brr = ArraySortOne自定義(brr, {5, 1, 9})
Debug.Print(Join(brr, ","))
二維數(shù)組排序在.NET中沒有直接支持,需要自己寫代碼實現(xiàn),對基礎不太好的同學就比較難了,這里我在Excel880VSTO框架中把VBA175例數(shù)組排序模塊移植了過來,可以繼續(xù)方便的使用排序函數(shù)無需關心實現(xiàn)細節(jié)。
Dim Sheet4 = Sheets("多列排序")
Dim rng = Range("A1").CurrentRegion
Dim arr = Intersect(rng, rng.Offset(1)).Value '去掉首行
'第2列升序 空值排后面 與系統(tǒng)排序表現(xiàn)一致
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
這里依然為大家增加了自定義排序函數(shù) 直接調用即可
Sub 二維數(shù)組自定義排序()
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數(shù)組排序函數(shù),在功能區(qū)實現(xiàn)一個工作表排序按鈕
提示:獲得工作表數(shù)組 進行排序 然后 依次移動到第一個工作表前