在用VBA做数据排列组合的时候想要这个组合中单个组合数据总和在一个范围内怎么才能做到

比如从1-10中选择4个数的排列组合,并且让每个组合中的数据的总和在(10-25)之间呢... 比如从1-10中选择4个数的排列组合,并且让每个组合中的数据的总和在(10-25)之间呢 展开
 我来答
szshoping
2013-10-17 · 超过24用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:90.1万
展开全部

1-10中选择,本人理解为0-9,10为双数值,包含0,数值的基础是通过0-9来组合的。代码如下

Sub 排列组合()
For A = 0 To 9
For B = 0 To 9
For C = 0 To 9
    For d = 0 To 9
        p = A + B + C + d
        If p >= 10 And p <= 25 Then
        k = k + 1
        Cells(k, 1) = A & B & C & d
        End If
              Next
     Next
     Next

 

   Next
       End Sub
注意将表格A列单元格式为自定义:0000,不然前面没有0!本列共有8288个符合总和10-25的条件!

如果您希望第一位的值是从1开始,则改 for A=1 to 9 即可!

百无生
2013-10-24 · TA获得超过2214个赞
知道大有可为答主
回答量:2150
采纳率:80%
帮助的人:632万
展开全部
For intSum = 10 To 25
For A = 1 To 10
If intSum - A < 1 + 2 + 3 Then Exit For
For B = 1 To 10
If B = A Then
If B = 10 Then
Exit For
Else
B = B + 1
End If
End If
If intSum - A - B < 1 + 2 Then Exit For
For C = 1 To 10
Select Case C
Case A
If C = 10 Then
Exit For
Else
C = C + 1
If C = B Then
If C = 10 Then
Exit For
Else
C = C + 1
End If
End If
End If
Case B
If C = 10 Then
Exit For
Else
C = C + 1
If C = A Then
If C = 10 Then
Exit For
Else
C = C + 1
End If
End If
End If
End Select

D = intSum - A - B - C
If D < 1 Or D > 10 Then Exit For
If D <> A And D <> B And D <> C Then
I = I + 1
Range("A" & I) = A & "/" & B & "/" & C & "/" & D
End If
Next C
Next B
Next A
Next intSum

共2668种组合
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式