有哪位excel高手能帮我解决排列组合的问题

如何在1-40的数中将其中的一位数与其他的六位数进行组合,每位数都要与不同的六位数组合一次,按低到高的顺序比如:01020304050607010203040506080... 如何在1-40的数中将其中的一位数与其他的六位数进行组合,每位数都要与不同的六位数组合一次,按低到高的顺序比如:01020304050607 01020304050608 01020304050609........01020304050640 01020304050708 01020304050609 01020304050640.......(最后的一组数应为)34353637383940 要横向排列 有自动生成的办法吗?请高手指点 展开
 我来答
帐号已注销
2010-04-24 · TA获得超过8613个赞
知道大有可为答主
回答量:3242
采纳率:66%
帮助的人:2847万
展开全部
有问题:
“每位数都要与不同的六位数组合一次”,那你的第一个组合应该是“01020304050601”,是这样不?
按照你的举例看,题目又好像是不同的7个数字的组合,是那种情况?

先搞清楚题目,再VBA
--------------------------
不同的7个数字的组合:
右键一个空的工作表名称,点击“查看代码”,将下面的代码复制到其中,然后按F5键运行:
Public Sub abc()
Dim row As Integer, b(6) As Integer, c(6) As String
row = 0
For i1 = 1 To 40
b(0) = i1
For i2 = i1 + 1 To 40
b(1) = i2
For i3 = i2 + 1 To 40
b(2) = i3
For i4 = i3 + 1 To 40
b(3) = i4
For i5 = i4 + 1 To 40
b(4) = i5
For i6 = i5 + 1 To 40
b(5) = i6
For i7 = i6 + 1 To 40
b(6) = i7
For j = 0 To 6
If b(j) < 10 Then c(j) = "0" & b(j)
If b(j) > 9 Then c(j) = b(j)
Next j
row = row + 1
Cells(row, 1) = c(0) & c(1) & c(2) & c(3) & c(4) & c(5) & c(6)
Next i7, i6, i5, i4, i3, i2, i1
End Sub
运行结果就放在该空表中。

注意:我运行的情况是“溢出”,因为组合太多了,只罗列出了一部分,到第32767行才列到了“01020309173134”,第一位数字还没有变,呵呵
具体的组合数量为40*39*38*37*36*35*34=93963542400 个,需要1433791个工作表,往哪儿放啊?
一逸永劳
2010-04-24 · TA获得超过558个赞
知道小有建树答主
回答量:489
采纳率:0%
帮助的人:265万
展开全部
要用VBa,Hi吧
别Hi我了吧,共有18643560个组合,一个表都装不下哦,运算一次要10几分钟啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式