【发布时间】:2016-04-10 17:09:46
【问题描述】:
如何创建一个组合生成器,其中顺序无关紧要,但仅限于特定的 Sum 范围?使用 Excel VBA 宏。请帮助我多年来一直在尝试解决这个问题,但并不擅长 excel vba ..需要实际的精确代码..
【问题讨论】:
-
发布您的输入和所需输出的small样本。
-
这可能是一个有趣的问题。 If only ...
如何创建一个组合生成器,其中顺序无关紧要,但仅限于特定的 Sum 范围?使用 Excel VBA 宏。请帮助我多年来一直在尝试解决这个问题,但并不擅长 excel vba ..需要实际的精确代码..
【问题讨论】:
这是一个非常简单的示例,它使用递增的二进制模式来生成一组项目的组合。
项目可以是数字或文本值。我使用列 B 作为 “辅助列” 来保存二进制模式,但可以替换一个数组。
将您的项目放在列 A 并运行这个简短的宏:
Sub Generate()
Dim i As Long, s As String
Dim j As Long, K As Long, N As Long
Dim wf As WorksheetFunction
Dim answer As String
Set wf = Application.WorksheetFunction
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To (2 ^ N) - 1
s = wf.Dec2Bin(i, N)
For j = 1 To N
Cells(j, 2).Value = Val(Mid(s, j, 1))
Next j
answer = ""
For j = 1 To N
If Cells(j, 2) = 1 Then answer = answer & "," & Cells(j, 1)
Next j
Cells(K, 3) = Mid(answer, 2)
K = K + 1
Next i
End Sub
例如:
【讨论】: