各位大咖:
从1,2,3,4,5,6,7,8,9,10,11,12总共12个数,随机抽取6个数组成组合,如何求各组合的和值(穷举)?例如 取1,2,3,4,5,6 组合 和值为21,如果是1,2,3,4,5,7组合,和值尾22,如何穷举 谢谢各位大咖帮忙!
本帖最后由 香川群子 于 2016-11-29 12:40 编辑
按列输出的代码:
- Dim sj, jg(), k&, l&, m&, n&
- Sub Combin_1()
- tms = Timer
- sj = [a1].CurrentRegion: l = UBound(sj)
- m = 12: n = 6: k = WorksheetFunction.Combin(m, n)
- ReDim jg(1 To l, k)
-
- k = 0: Call dgZH(0, 1)
- MsgBox Format(Timer - tms, "0.000s")
- [o1].CurrentRegion = "": [o1].Resize(l, k) = jg
- End Sub
- Sub dgZH(j1&, t&)
- Dim i&, j&
- For j = j1 + 1 To 6 + t 'm - n + t
- For i = 1 To l
- jg(i, k) = jg(i, k) + sj(i, j)
- Next
- If t < n Then
- Call dgZH(j, t + 1)
- Else
- k = k + 1
- For i = 1 To l
- jg(i, k) = jg(i, k - 1)
- Next
- End If
- For i = 1 To l
- jg(i, k) = jg(i, k) - sj(i, j)
- Next
- Next
- End Sub
复制代码
注意输出语句要改一下:
[o1].CurrentRegion = "": [o1].Resize(l, k) = jg
我测试时用了数字10,只能输出10列。
|