Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3457|回复: 10

[已解决]请老师修改数字组合代码

[复制链接]
发表于 2013-11-29 09:44 | 显示全部楼层 |阅读模式
本帖最后由 ymq123 于 2013-11-29 20:26 编辑

请老师帮助修改代码:把sheets(1)中“可选数值”A2:A11改为如sheets(2)中"可选数值"A2:J10,组合后的内容如sheets(2)中表“组合后内容”,删除生成B、C、D列内容的代码(需要修改的代码在sheets(2)里)。
谢谢!
最佳答案
2013-11-29 13:55
2楼代码虽然还有改进提速的余地,但实际速度也不算慢。

再说,楼主一共才61个组合解,就算是老牛拉破车,也毫无压力。


附件是2楼代码的附件。

递归算法,从算法上看没有问题。

请老师修改数字组合代码.rar

17.64 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-29 10:53 | 显示全部楼层
直接写的,噢……特慢
Dim r&
Sub test()
ar = [a2:j6]
For i% = 1 To UBound(ar)
     a = Application.Index(ar, i)
     Call z("", a, 1, 0)
Next
End Sub
Sub z(s, ar, i, l)
    If l >= 7 Then
       r = r + 1
       For Each t In Split(Trim(s), " ")
           If Len(t) Then Cells(r, 26 + t * 1) = t
       Next
       Exit Sub
    End If
    For j = i To UBound(ar)
        If Len(ar(j)) > 0 Then
          Call z(s & " " & ar(j), ar, j + 1, l + 1)
        Else
          s = s & " "
        End If
    Next
End Sub

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

发表于 2013-11-29 13:55 | 显示全部楼层    本楼为最佳答案   
2楼代码虽然还有改进提速的余地,但实际速度也不算慢。

再说,楼主一共才61个组合解,就算是老牛拉破车,也毫无压力。


附件是2楼代码的附件。

递归算法,从算法上看没有问题。

数字組合.zip

13 KB, 下载次数: 18

回复

使用道具 举报

发表于 2013-11-29 14:04 | 显示全部楼层
灰袍法师的通用循环组合代码,也算不错,
但现在看已经落后了,没有价值了。呵呵

单纯看组合算法,目前是我【香川组合算法】的速度最快。
计算生成1千万组组合只要1秒……比别人的代码至少快5-10倍。




回复

使用道具 举报

发表于 2013-11-29 15:06 | 显示全部楼层
群子别误导哈
避免误导还是该指出嘛
2楼代码小问题暂不提,主要有两个最大的毛病:
一是直接写进单元格,这在E中是最不提倡的;
二是从s2中取数组成s1到某时,s1还需要k个数,而s2中可供选择的数不够用了,程序还在按部就班的慢慢走呀走。
这些都该改,就是太懒了
回复

使用道具 举报

 楼主| 发表于 2013-11-29 19:17 | 显示全部楼层
上清宫主 发表于 2013-11-29 15:06
群子别误导哈
避免误导还是该指出嘛
2楼代码小问题暂不提,主要有两个最大的毛病:

请问 r=0 的初始值放在什么位置。谢谢!
回复

使用道具 举报

 楼主| 发表于 2013-11-29 21:21 | 显示全部楼层
香川群子 发表于 2013-11-29 13:55
2楼代码虽然还有改进提速的余地,但实际速度也不算慢。

再说,楼主一共才61个组合解,就算是老牛拉破车, ...

老师你好,请帮助修改代码:有两组可选数值进行组合,生成结果都是第一组可选数值(可选数值1)生成的,没有第二组可选数值(可选数值2)生成的结果。谢谢!

数字組合.rar

104.72 KB, 下载次数: 5

回复

使用道具 举报

发表于 2013-11-30 11:06 | 显示全部楼层
上清宫主 发表于 2013-11-29 15:06
群子别误导哈
避免误导还是该指出嘛
2楼代码小问题暂不提,主要有两个最大的毛病:

2楼代码虽然还有改进提速的余地,但实际速度也不算慢。

再说,楼主一共才61个组合解,就算是 老 牛 拉 破 车,也毫无压力。
回复

使用道具 举报

发表于 2013-11-30 11:15 | 显示全部楼层
楼主一次性把问题说清楚,一次性把要求附件上完。


在你明确回复之前,暂不回答。

明确以下内容
1. 原始数据格式和范围
2. 要求规则
3. 结果输出区域
回复

使用道具 举报

 楼主| 发表于 2013-11-30 13:09 | 显示全部楼层
香川群子 发表于 2013-11-30 11:15
楼主一次性把问题说清楚,一次性把要求附件上完。

老师你好
1. 原始数据格式和范围:可选数值1可选数值2两表
2. 要求规则 :同时对表可选数值1和表可选数值2进行组合
3. 结果输出区域:表可选数值1中数字组合后放在表组合1里,表可选数值2中数字组合后放在表组合2
谢谢

数字組合.rar

115.55 KB, 下载次数: 9

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 20:20 , Processed in 0.406713 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表