根据excel文件名排序的有关问题。多谢
求助:根据excel文件名排序的问题。谢谢
arrFiles(i)里放的是 excel 文件名,如“资料20070102(小明).xls”
我先把 日期“20070102”取出,进行排序,如果日期相同,对括号里的姓名进行排序。日期排序部分已完成,不知道 汉字 按拼音排序有没有相关的函数,没有的话,各位大侠又都是怎样解决的呢?
For j = 0 To UBound(arrFiles) - 1
For k = 1 To UBound(arrFiles)
If CLng(Mid$(arrFiles(j).Name, 5, 8)) > CLng(Mid$(arrFiles(k).Name, 5, 8)) Then
Set temp = arrFiles(j)
Set arrFiles(j) = arrFiles(k)
Set arrFiles(k) = temp
ElseIf CLng(Mid$(arrFiles(j).Name, 5, 8)) = CLng(Mid$(arrFiles(k).Name, 5, 8)) Then
....... //不知道的部分
End If
Next k
Next j
------解决方案--------------------
你这个问题要写一个排序算法有一定的难度,有人通过用具有排序功能控件来解决的,我也给你一个方法,就是利用记录集来解决,几行代码就搞定,效率也还不错,示例代码如下:
'以下代码要引用“Microsoft AetiveX Date Objects 2.x Library”
Sub RecordsetSort(ByRef arr() As String)
Dim rs As New Recordset
Dim i As Integer
With rs
.Fields.Append "FSort ", adVarChar, 50
'.CursorType = adOpenKeyset
'.LockType = adLockOptimistic
.Open
For i = LBound(arr) To UBound(arr)
.AddNew
!FSort = arr(i)
.Update
Next
'.UpdateBatch
.Sort = "FSort ASC "
For i = LBound(arr) To UBound(arr)
arr(i) = !FSort
.MoveNext
Next
End With
Set rs = Nothing
End Sub
------解决方案--------------------
另一个办法:
排序让Excel来做
比如
A列放 "资料 "
B列放 "日期 "
C列放 "姓名 "
调用Excel自带的排序功能后再把结果取到数组
arrFiles(i)里放的是 excel 文件名,如“资料20070102(小明).xls”
我先把 日期“20070102”取出,进行排序,如果日期相同,对括号里的姓名进行排序。日期排序部分已完成,不知道 汉字 按拼音排序有没有相关的函数,没有的话,各位大侠又都是怎样解决的呢?
For j = 0 To UBound(arrFiles) - 1
For k = 1 To UBound(arrFiles)
If CLng(Mid$(arrFiles(j).Name, 5, 8)) > CLng(Mid$(arrFiles(k).Name, 5, 8)) Then
Set temp = arrFiles(j)
Set arrFiles(j) = arrFiles(k)
Set arrFiles(k) = temp
ElseIf CLng(Mid$(arrFiles(j).Name, 5, 8)) = CLng(Mid$(arrFiles(k).Name, 5, 8)) Then
....... //不知道的部分
End If
Next k
Next j
------解决方案--------------------
你这个问题要写一个排序算法有一定的难度,有人通过用具有排序功能控件来解决的,我也给你一个方法,就是利用记录集来解决,几行代码就搞定,效率也还不错,示例代码如下:
'以下代码要引用“Microsoft AetiveX Date Objects 2.x Library”
Sub RecordsetSort(ByRef arr() As String)
Dim rs As New Recordset
Dim i As Integer
With rs
.Fields.Append "FSort ", adVarChar, 50
'.CursorType = adOpenKeyset
'.LockType = adLockOptimistic
.Open
For i = LBound(arr) To UBound(arr)
.AddNew
!FSort = arr(i)
.Update
Next
'.UpdateBatch
.Sort = "FSort ASC "
For i = LBound(arr) To UBound(arr)
arr(i) = !FSort
.MoveNext
Next
End With
Set rs = Nothing
End Sub
------解决方案--------------------
另一个办法:
排序让Excel来做
比如
A列放 "资料 "
B列放 "日期 "
C列放 "姓名 "
调用Excel自带的排序功能后再把结果取到数组