您的位置:程序门 -> vb -> vba



求助:根据excel文件名排序的问题。谢谢


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求助:根据excel文件名排序的问题。谢谢[已结贴,结贴人:shun5042]
发表于:2007-09-26 15:58:57 楼主

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
发表于:2007-09-27 08:57:421楼 得分:10
你这个问题要写一个排序算法有一定的难度,有人通过用具有排序功能控件来解决的,我也给你一个方法,就是利用记录集来解决,几行代码就搞定,效率也还不错,示例代码如下:

'以下代码要引用“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
发表于:2007-09-28 10:22:222楼 得分:10
另一个办法:

排序让excel来做

比如
a列放 "资料 "
b列放 "日期 "
c列放 "姓名 "

调用excel自带的排序功能后再把结果取到数组


快速检索

最新资讯
热门点击