【问题标题】:How to create a combination generator where order does not matter but being limited from a specific range of Sum? Using Excel VBA macro [closed]如何创建一个组合生成器,其中顺序无关紧要,但受限于特定的 Sum 范围?使用 Excel VBA 宏 [关闭]
【发布时间】:2016-04-10 17:09:46
【问题描述】:

如何创建一个组合生成器,其中顺序无关紧要,但仅限于特定的 Sum 范围?使用 Excel VBA 宏。请帮助我多年来一直在尝试解决这个问题,但并不擅长 excel vba ..需要实际的精确代码..

【问题讨论】:

  • 发布您的输入和所需输出的small样本。
  • 这可能是一个有趣的问题。 If only ...

标签: vba excel macros


【解决方案1】:

这是一个非常简单的示例,它使用递增的二进制模式来生成一组项目的组合。

项目可以是数字或文本值。我使用列 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

例如:



因为N 项目有(2^N)-1 组合,所以在A 列中可以放置的项目数量存在实际限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2017-01-22
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多