第一组数02 05 06 12 14 28 04 06 12 30 31 32 02 08 13 28 29 30 01 02 05 16 20 26 01 07 08 12 16 21
第二组数01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
统计第一组数出现01-33的各种次数正确答案应该如下:
〖00次〗03 09 10 11 15 17 18 19 22 23 24 25 27 33  (共14个)
〖01次〗04 07 13 14 20 21 26 29 31 32  (共10个)
〖02次〗01 05 06 08 16 28 30  (共7个)
〖03次〗02 12  (共2个) 

解决方案 »

  1.   

    dim a() as long
    redim a(33)for i=0 to n 'n为你的组数据的最大个数
      a(d(i))=a(d(i))+1  'd数组为你保存的数据
    nextfor i=1 to 33
     print i,a(i)     '打印1到33,每个数出现的次数
    next
      

  2.   

    可以利用 ListBox 统计:Option ExplicitPrivate 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    '在 ListBox 中精确查找
    Dim strSource As String, strItem() As String
    Dim i As Long, n As Long
    strSource = "02 05 06 12 14 28 04 06 12 30 31 32 02 08 13 28 29 30 01 02 05 16 20 26 01 07 08 12 16 21"
    List1.Clear
    strItem = Split(strSource, " ")
    For i = 0 To Ubound(strItem)
        n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, strItem(i))
        If n = -1 Then '没有匹配列表项
            List1.AddItem strItem(i)
            List1.ItemData(List1.NewIndex) = 1
        Else
            List1.ItemData(n) = List1.ItemData(n) + 1
        End If
    Next iFor i = 0 To List1.ListCount - 1
        Debug.Print List1.List(i), List1.ItemData(i)
    Next i列表项就是组内元素,对应的 ItemData 是出现次数。
      

  3.   

    要得到你的按次数汇总的字符串,直接对组成员扫描也很直接:
    Dim strSource As String, strItem() As String, strItem_in_Times() As String
    Dim i As Long, j As Long, n As Long
    strSource = "02 05 06 12 14 28 04 06 12 30 31 32 02 08 13 28 29 30 01 02 05 16 20 26 01 07 08 12 16 21"ReDim strItem_in_Times(0)
    strItem = Split(strSource, " ")
    For i = 1 To 33
        strSource = Format(i, "0#")
        n = 0
        For j = 0 To UBound(strItem)
            If strSource = strItem(j) Then n = n + 1
        Next j
        
        If n > UBound(strItem_in_Times) Then ReDim Preserve strItem_in_Times(n)
        
        strItem_in_Times(n) = strItem_in_Times(n) & IIf(strItem_in_Times(n) = "", "", " ") & strSource
    Next iFor i = 0 To UBound(strItem_in_Times)
        Debug.Print "[" & Format(i, "0#") & "次] " & strItem_in_Times(i)
    Next i
      

  4.   

    利用 ListBox 查找组 2 元素在组1 中出现次数的过程内代码如下:Dim strSource As String, strItem() As String, strItem_in_Times() As String
    Dim i As Long, n As Long
    strSource = "02 05 06 12 14 28 04 06 12 30 31 32 02 08 13 28 29 30 01 02 05 16 20 26 01 07 08 12 16 21"
    List1.Clear
    strItem = Split(strSource, " ")
    For i = 0 To UBound(strItem)
        n = SendMessagebyString(List1.hWND, LB_FINDSTRINGEXACT, -1, strItem(i))
        If n = -1 Then '没有匹配列表项
            List1.AddItem strItem(i)
            List1.ItemData(List1.NewIndex) = 1
        Else
            List1.ItemData(n) = List1.ItemData(n) + 1
        End If
    Next istrSource = "01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33"
    strItem = Split(strSource, " ")
    ReDim strItem_in_Times(0)
    For i = 0 To UBound(strItem)
        n = SendMessagebyString(List1.hWND, LB_FINDSTRINGEXACT, -1, strItem(i))
        If n = -1 Then '没有匹配列表项
            strItem_in_Times(0) = strItem_in_Times(0) & IIf(strItem_in_Times(0) = "", "", " ") & strItem(i)
        Else
            If List1.ItemData(n) > UBound(strItem_in_Times) Then ReDim Preserve strItem_in_Times(List1.ItemData(n))
            strItem_in_Times(List1.ItemData(n)) = strItem_in_Times(List1.ItemData(n)) & IIf(strItem_in_Times(List1.ItemData(n)) = "", "", " ") & strItem(i)
        End If
    Next iFor i = 0 To UBound(strItem_in_Times)
        Debug.Print "[" & Format(i, "0#") & "次] " & strItem_in_Times(i)
    Next i