版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/taller_2000/article/details/83021255
JavaScript排序法 - 字符排序
使用JS进行字符排序,比数字排序更简单。
function sortarr(para)
{
arr=para.split(',');
arr.sort ();
return arr;
}
JS代码解析:
第4行代码调用数组的Sort方法,无需任何参数。
接下来在VBA中调用JS代码。
Sub JSSortText_ASC()
Dim astrData As Variant
Dim strName As String
Dim objJS As Object
Dim strSortedName As String
astrData = Array("Mike", "Tim", "Jane", "Jim", "Alex", "Helen", "Jessica", "Julie", "Chris", "Rick")
strName = Join(astrData, ",")
Debug.Print "Original Data: " & strName
Set objJS = CreateObject("msscriptcontrol.scriptcontrol")
objJS.Language = "javascript"
objJS.addcode "function sortarr(para){arr=para.split(',');arr.sort();return arr;}"
strSortedName = objJS.eval("sortarr('" & strName & "')")
Debug.Print "After Sort(ASC): " & strSortedName
End Sub
运行代码结果如下。
Original Data: Mike,Tim,Jane,Jim,Alex,Helen,Jessica,Julie,Chris,Rick
After Sort(ASC): Alex,Chris,Helen,Jane,Jessica,Jim,Julie,Mike,Rick,Tim
如果需要实现字符降序排序,只需要略微修改JS代码。
Sub JSSortText_DSC()
Dim astrData As Variant
Dim strName As String
Dim objJS As Object
Dim strSortedName As String
astrData = Array("Mike", "Tim", "Jane", "Jim", "Alex", "Helen", "Jessica", "Julie", "Chris", "Rick")
strName = Join(astrData, ",")
Debug.Print "Original Data: " & strName
Set objJS = CreateObject("msscriptcontrol.scriptcontrol")
objJS.Language = "javascript"
objJS.addcode "function sortarr(para){arr=para.split(',');arr.sort();arr.reverse();return arr;}"
strSortedName = objJS.eval("sortarr('" & strName & "')")
Debug.Print "After Sort(DSC): " & strSortedName
End Sub
运行代码结果如下。
Original Data: Mike,Tim,Jane,Jim,Alex,Helen,Jessica,Julie,Chris,Rick
After Sort(DSC): Tim,Rick,Mike,Julie,Jim,Jessica,Jane,Helen,Chris,Alex
相关文章链接:
数组排序系列(1)-- 冒泡法
数组排序系列(2)-- 极值法
数组排序系列(3)-- 工作表排序法
数组排序系列(4)-- JavaScript排序法(数字升序)
数组排序系列(5)-- JavaScript排序法(数字降序)
数组排序系列(6)-- JavaScript排序法(字符排序)