返回列表 上一主題 發帖

[發問] 數值排列組合問題

' 大大可以用這個枚舉索引

Function GG1(id_ar, ByVal id_ar_value_max As Long) As Boolean
     Dim ub&, w&, k&
     
         ub = UBound(id_ar)
      id_ar(ub) = id_ar(ub) + 1
   If id_ar(ub) > id_ar_value_max Then
      
      For w = ub - 1 To LBound(id_ar) Step -1
          If (id_ar(w) + UBound(id_ar) - w) < id_ar_value_max Then
             id_ar(w) = id_ar(w) + 1
             For k = w + 1 To ub
                 id_ar(k) = id_ar(k - 1) + 1
             Next
             GG1 = True
             Exit Function
          End If
      Next
    Else
      GG1 = True
    End If
End Function

TOP

本帖最後由 jackyq 於 2016-3-18 17:37 編輯

Sub 執行我()

  欄位_Max = Cells(, "D").Column
  
  For cc = 1 To 欄位_Max
    ReDim 欄位(1 To cc) As Long
    ReDim Result(1 To cc) As String
    For w = 1 To cc: 欄位(w) = w: Next
   
    Do
      money= 0
      For w = LBound(欄位) To UBound(欄位)
          money = money + val(Cells(2, 欄位(w)))
          If money > 105 Then Exit For
          Result(w) = Cells(1, 欄位(w))
      Next
      If money <= 105 Then
         Result_s = Result_s & Join(Result, "+") & " = " & money & vbCrLf
      End If
    Loop Until Not GG1(id_ar:=欄位, id_ar_value_max:=欄位_Max)
  Next
   
  If Result_s <> "" Then MsgBox Result_s
End Sub

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題