VBA里面沒有現成的Sort方法可以使用,在ExcelVBA里面要對數組進行排序,現有的通常做法:
1,通過單元格賦值以后利用工作表里的Sort方法進行排序,
2,通過SQL實現,也需要調用單元格區域存放數據,
3,直接寫循環語句通過算法來實現。
除了上述方法以外,借助一些其他語言工具與VBA相結合,也能利用現成的排序功能來實現數組排序,而不需要借助表格。
例如JavaScript:
JavaScript里面也有Sort方法,可以拿來現成使用,示例代碼如下:
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_r("aa(‘" & temp & "’)")
Debug.Print sortarr
End Sub
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_r("aa(‘" & temp & "’)")
Debug.Print sortarr
End Sub
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(function(a,b){return a-b;});return js;}"
sortarr = js.eval_r("aa(‘" & temp & "’)")
Debug.Print sortarr
End Sub