VBA实现排列组合,跪求!!! 160
共12列,每列代表1~12月,共91行,每行为0度到90度共91个角度,不同行列下对应不同的数值。急需要实现的是:将12个月分成四组,最后输出每种组合形式下,数值之和最大...
共12列,每列代表1~12月,共91行,每行为0度到90度共91个角度,不同行列下对应不同的数值。
急需要实现的是:将12个月分成四组,最后输出每种组合形式下,数值之和最大对应的度数和在该度数下的数值之和。其中,每组中各月要相邻,且12月可以和1月为一组。
12个月分成四组不一定非是平均分配,一个组合里面最少包含一个月,最多包含9个月。麻烦您能不能再修改一下啊?非常感谢。
我知道总共的组合方式是C12(4)种组合,=12*11*10*9/4/3/2/1共495种组合方式。 展开
急需要实现的是:将12个月分成四组,最后输出每种组合形式下,数值之和最大对应的度数和在该度数下的数值之和。其中,每组中各月要相邻,且12月可以和1月为一组。
12个月分成四组不一定非是平均分配,一个组合里面最少包含一个月,最多包含9个月。麻烦您能不能再修改一下啊?非常感谢。
我知道总共的组合方式是C12(4)种组合,=12*11*10*9/4/3/2/1共495种组合方式。 展开
1个回答
展开全部
使用下列宏,计算结果放在新建的Sheet里面
Sub group_by_zzllrr()
Dim a, m, n, ii, d
Set a = ActiveSheet
m = Split("1 2 3 4 5 6 7 8 9 10 11 12 1 2", " ")
Sheets.Add After:=Sheets(Sheets.Count)
Range("A1:C1") = Array("分组", "所求度数", "最大数值和")
For i = 0 To 2
For j = 0 To 3
n1 = m(i + 3 * j)
n2 = m(i + 3 * j + 1)
n3 = m(i + 3 * j + 2)
ii = 2 + j + i * 4
Range("A" & ii) = n1 & " " & n2 & " " & n3
s = 0
d = 0
For k = 0 To 90
t = a.Cells(k + 2, n1 + 1) + a.Cells(k + 2, n2 + 1) + a.Cells(k + 2, n3 + 1)
If t > s Then
s = t
d = k
End If
Next k
Range("B" & ii) = d
Range("C" & ii) = s
Next j
Next i
End Sub
追问
您好!首先很感谢你的解答。现在还有一个问题是,12个月分成四组不一定非是平均分配,一个组合里面最少包含一个月,最多包含9个月。麻烦您能不能再修改一下啊?非常感谢。
我知道总共的组合方式是C12(4)种组合,=12*11*10*9/4/3/2/1共495种组合方式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询