01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 这个数据每5个为一条数据,直到完成全部复式。如
01 02 03 04 05 第一条
01 02 03 04 06 第二条
01 02 03 04 07 第二条这样全部复式下去,
每一条不能有相同数据。   

解决方案 »

  1.   


    要用的对象是listview  要指出要复式的具体数据用文本框来指定。
      

  2.   


    Option Explicit'增加一个 按扭,一个 list1 列表框就行了,
    Private Sub Command1_Click()
      Dim Arr() As String
      Dim i As Long
      Arr = LoadData(20) '20选五
      
      For i = 1 To UBound(Arr)
         List1.AddItem Arr(i)
      Next
    End SubPrivate Function LoadData(ByVal Num As Long) As String()
       Dim i As Long
       Dim j As Long
       Dim m As Long
       Dim n As Long
       Dim k As Long
       
       Dim Data() As String
       Dim Count As Long
       
       For i = 1 To Num - 4
          For j = i + 1 To Num - 3
             For m = j + 1 To Num - 2
                For n = m + 1 To Num - 1
                   For k = n + 1 To Num
                       Count = Count + 1
                       ReDim Preserve Data(Count) As String
                       Data(Count) = Format(i, "00") & "," & Format(j, "00") & "," & Format(m, "00") & "," & Format(n, "00") & "," & Format(k, "00")               Next
                Next
              Next
           Next
       Next
       LoadData = Data
    End Function
      

  3.   

    你可以在VB里测试一下
    新建个EXE工程,在窗口里放置一个CommandBox按钮和一个TextBox控件
    将TextBox控件的MultiLine属性设置为True,运行看看Private Sub Command1_Click()
        Dim X As Currency, ForCount As Currency, InitializeCount As Currency
        Dim StringCodeing(99) As String, StringInfo As String
        For X = 0 To 99
            StringCodeing(X) = X
        Next X
        '这是运算需要循环的总数
        'ForCount = 99 * (100 ^ 4) + 99 * (100 ^ 3) + 99 * (100 ^ 2) + 99 * 100 + 99
        
        '初始化循环的开始位置
        InitializeCount = StrToAlgorism("0102030405", StringCodeing)
        '设置循环的结束位置
        ForCount = StrToAlgorism("0102030419", StringCodeing)
        
        For X = InitializeCount To ForCount
            If X = InitializeCount Then
                StringInfo = AlgorismToString(X, StringCodeing, 5)
            Else
                StringInfo = StringInfo & vbCrLf & AlgorismToString(X, StringCodeing, 5)
            End If
        Next X
        Text1.Text = StringInfo
    End Sub'十进制到任意进制的转换
    Public Function AlgorismToString(Algorism As Currency, StrCodeing() As String, BitCount As Long) As String
       Dim X As Currency, BasicCount As Currency, BasicCountSave As Currency, StrCount As Currency, OneBitCount As Long
       StrCount = UBound(StrCodeing) + 1
       AlgorismToString = ""
       BasicCount = Int(Algorism / StrCount)
       If BasicCount >= StrCount Then
          OneBitCount = StrCodeing(Algorism Mod StrCount)
          AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount
          Do
             OneBitCount = StrCodeing(BasicCount Mod StrCount)
             AlgorismToString = String((Len(CStr(StrCount)) - 1) - Len(CStr(OneBitCount)), StrCodeing(0)) & OneBitCount & AlgorismToString
             BasicCountSave = BasicCount
             BasicCount = Int(BasicCount / StrCount)
          Loop While BasicCount > (StrCount - 1)
          AlgorismToString = StrCodeing(Int(BasicCountSave / StrCount)) & AlgorismToString
       Else
          AlgorismToString = StrCodeing(BasicCount) & StrCodeing(Algorism Mod StrCount)
       End If
       AlgorismToString = String((BitCount * (Len(CStr(StrCount)) - 1)) - Len(AlgorismToString), StrCodeing(0)) & AlgorismToString
    End Function'任意进制到十进制的转换
    Public Function StrToAlgorism(StrInfo As String, StrCodeing() As String) As Currency
       Dim X As Currency, Y As Currency, TempString As String, CountBitLen As Long
       Dim NowCodeingCount As Currency, StrCount As Currency, BitCount As Long, NowBitCount As Long
       Dim OneBitCount As Long
       NowBitCount = 0
       StrCount = UBound(StrCodeing) + 1
       BitCount = Len(StrCodeing(UBound(StrCodeing)))
       CountBitLen = Len(StrInfo) / BitCount
       For X = 1 To Len(StrInfo) Step BitCount
          NowBitCount = NowBitCount + 1
          TempString = Mid(StrInfo, X, BitCount)
          For Y = 1 To BitCount
             If Mid(TempString, Y, 1) <> StrCodeing(0) Then
                Exit For
             End If
          Next Y
          TempString = Right(TempString, BitCount - (Y - 1))
          For Y = 0 To (StrCount - 1)
             If TempString = StrCodeing(Y) Then
                NowCodeingCount = Y
                Exit For
             End If
          Next Y
          OneBitCount = NowCodeingCount * (StrCount ^ (CountBitLen - NowBitCount))
          StrToAlgorism = StrToAlgorism + OneBitCount
       Next X
    End Function
    这个程序主要是将你的需求用进制运算来解决的
    因为你提供的数据是
    01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 
    其中出现的都是两位数字所组成,所以范围应该在 00-99 之间,即逢100进1,就是100进制了
    按这个思路进行运算。
    5位的100进制数的递增循环,这就是上面程序的大概意思