2019-07-07

VBA里面沒有現(xiàn)成的Sort方法可以使用,VBA里面要對數(shù)組進(jìn)行排序,現(xiàn)有的通常做法:?

1,通過單元格賦值以后利用工作表里的Sort方法進(jìn)行排序,?

2,通過SQL實現(xiàn),也需要調(diào)用單元格區(qū)域存放數(shù)據(jù),?

3,直接寫循環(huán)語句通過算法來實現(xiàn)。

除了上述方法以外,借助一些其他語言工具與VBA相結(jié)合,也能利用現(xiàn)成的排序功能來實現(xiàn)數(shù)組排序,而不需要借助表格。?

例如JavaScript:

JavaScript里面也有Sort方法,可以拿來現(xiàn)成使用,示例代碼如下:?

Sub文本升序()

Set js = CreateObject(“msscriptcontrol.scriptcontrol”)?

js.Language = “javascript”?

arr = Application.Transpose(Range(“A1:A10”))?

temp = Join(arr, “,”)?

js.addcode “function aa(bb){js=bb.split(‘,’);js.sort();return js;}”?

sortarr = js.eval(“aa(‘” & temp & “’)”)?

Debug.Print sortarr?

End Sub?

復(fù)制代碼?

Sub文本降序()

Set js = CreateObject(“msscriptcontrol.scriptcontrol”)?

js.Language = “javascript”?

arr = Application.Transpose(Range(“A1:A10”))?

temp = Join(arr, “,”)?

js.addcode “function aa(bb){js=bb.split(‘,’);js.sort();js.reverse();return js;}”?

sortarr = js.eval(“aa(‘” & temp & “’)”)?

Debug.Print sortarr?

End Sub?

復(fù)制代碼?

Sub數(shù)值升序()

Set js = CreateObject(“msscriptcontrol.scriptcontrol”)?

js.Language = “javascript”?

arr = Application.Transpose(Range(“A1:A10”))?

temp = Join(arr, “,”)?

js.addcode “function aa(bb){js=bb.split(‘,’);js.sort(function(a,b){return a-b;});return js;}”?

sortarr = js.eval(“aa(‘” & temp & “’)”)?

Debug.Print sortarr?

End Sub?

復(fù)制代碼?

Sub數(shù)值降序()

Set js = CreateObject(“msscriptcontrol.scriptcontrol”)?

js.Language = “javascript”?

arr = Application.Transpose(Range(“A1:A10”))?

temp = Join(arr, “,”)?

js.addcode “function aa(bb){js=bb.split(‘,’);js.sort(function(a,b){return a-b;});js.reverse();return js;}”?

sortarr = js.eval(“aa(‘” & temp & “’)”)?

Debug.Print sortarr?

End Sub?

復(fù)制代碼

.NET里面有SortedList類也可以用來實現(xiàn)排序,但需要系統(tǒng)支持Framework

示例代碼如下:?

Sub Sortlist()?

Set objSortedlist = CreateObject(“System.Collections.Sortedlist”)?

For i = 1 To 10?

objSortedlist.Add Range(“A” & i).Value, Range(“A” & i).Value?

Next i?

For i = 0 To objSortedlist.Count - 1?

Debug.Print objSortedlist.GetKey(i)?

Next?

End Sub?

復(fù)制代碼

除了SortedList類,還有ArrayList也可以用

示例代碼如下:

Sub Arraylist()?

Set objArrayList = CreateObject(“System.Collections.ArrayList”)?

For i = 1 To 10?

objArrayList.Add Range(“A” & i).Value?

Next i?

objArrayList.Sort?

For i = 0 To objArrayList.Count - 1?

Debug.Print objArrayList(i)?

Next?

End Sub?

復(fù)制代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,219評論 0 9
  • DAY 05 1、 public classArrayDemo { public static void mai...
    周書達(dá)閱讀 833評論 0 0
  • 這段時間頗有點邯鄲學(xué)步的感覺,由于把大量的時間和精力投入到python中,之前學(xué)的vba到想用的時候,居然忘了。 ...
    猛犸象和劍齒虎閱讀 11,218評論 0 8
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,684評論 0 7
  • 我是一個嗜睡的人,平日里有機(jī)會便想睡個懶覺。平常早起的時候也是急匆匆地走在路上,從未留意過周遭。 所以,每一次悠閑...
    咚2咯咯閱讀 248評論 0 1

友情鏈接更多精彩內(nèi)容