比如把C:\WINDOWS\system32目录下的文件格式分类汇总成
exe 格式文件 m 个
dll 格式文件 n 个
chm 格式文件 p 个
其他格式文件 q 个 已经做到,一次性获取所有文件名,并赋给一列数组,如何对给该数组进行分类汇总,汇总结果写在单元格里。
有没有对给数组进行分类汇总的例子或者代码,谢谢!

解决方案 »

  1.   

    用循环吧.
    dim arr(N)
    FOR I=0 TO ubound(arr,1)
       '判断
    NEXT I
      

  2.   

    简单的例子~Private Sub Form_Click()
        Dim tFileName(10) As String
        Dim extName As String
        Dim i As Integer
        Dim j As Integer
        Dim Count As Integer
        
        Me.Cls
        
        '测试数据
        Randomize Timer
        For i = 0 To 10
            t = Rnd * 10
            If t < 3 Then
                ext = ".EXE"
            ElseIf t < 7 Then
                ext = ".Com"
            Else
                ext = ".Html"
            End If
            tFileName(i) = "file" & i & ext
        Next
        
        Me.Print "FileName:" & vbCrLf & "================="
        For i = 0 To 10
            Me.Print tFileName(i)
        Next
        
        '计数
        Me.Print vbCrLf & "Count:" & vbCrLf & "================="
        For i = 0 To 10
            If tFileName(i) <> "" Then
                extName = Mid(tFileName(i), InStrRev(tFileName(i), ".") + 1)
                Count = 0
                For j = i To 10
                    If Right(tFileName(j), Len(extName)) = extName Then
                        Count = Count + 1
                        tFileName(j) = ""
                    End If
                Next
                Me.Print extName & " : " & Count
            End If
        Next
    End Sub
      

  3.   

    用dir或者fso做一个遍历吧。可以拿到所有的目录和文件名。
    剩下的就是怎样把它们放到数租里面了。
      

  4.   

    赋值的时候就汇总可能更好。下面是一个利用 ListBox 的例子(可以将其 Visible = False):Private Declare Function SendMessagebyString Lib _
    "user32" Alias "SendMessageA" (ByVal hWND As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2'在循环中,取得一个文件名,并插入数组后
    strExt = Mid(strFileName, InStrRev(strFileName, ".") + 1)
    n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, strExt)
    If n = -1 Then
       List1.AddItem strExt
       List1.ItemData(List1.NewIndex) = 1
    Else
       List1.ItemData(n) = List1.ItemData(n) + 1
    End If'最终,List1.List(Index) 是扩展名,List1.ItemData(Index) 是其汇总数