求一款软件用于列举数字的排列组合,最好能在excel中输出结果

1到49这些数字里面选取三个数字进行组合,一一列举出来,最好能由大到小或者由小到大依次排列输出到excel里面,我搜了知道内的答案,现成的模型多半是9选5等简单的组合,据... 1到49这些数字里面选取三个数字进行组合,一一列举出来,最好能由大到小或者由小到大依次排列输出到excel里面,我搜了知道内的答案,现成的模型多半是9选5等简单的组合,据说只要改改VB代码就可以实现49选3组合,求大神帮忙,财富值什么的都不是问题。
如果能够实现从excel中获取样本数字,任意输出我指定的两两组合或三三组合(甚至其他类型的组合)的话,我可以给大量财富。比如现在我需要1到49连续数字三三组合,可能过段时间我又想知道1到100不连续数字三三组合或两两组合,也就是说最好能够写一个简易的通用工具
展开
 我来答
蒙畅问0d
2014-08-20 · 超过50用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:125万
展开全部
给你一段VBA代码吧,放入EXCEL的代码页中(ALT+F11),运行主程序MYCMB()就会把结果输出到表格中。

Sub MYCMB()
Const t = 5, Z = 8 '从8个数字中取5个进行组合
Dim CNO, q(), CM(), CM2()
st = Timer
'为保证速度,用数组存储结果
ReDim q(1 To t)
ReDim CM(1 To WorksheetFunction.combin(Z, t))
nq 1, 1, t, Z, CNO, q(), CM()

'转二维数组,以便EXCEL存放
ReDim CM2(1 To CNO, 1 To t)
For i = 1 To CNO
For j = 1 To t
CM2(i, j) = CM(i)(j)
Next j
Next i
'输出结果到表格
Cells(1, t + 2) = "组合数"
Cells(1, t + 3) = CNO
If CNO > 65536 Then CNO = 65536
Range(Cells(1, 1), Cells(CNO, t)) = CM2
Cells(2, t + 2) = "运行时间(秒)"
Cells(2, t + 3) = Timer - st
End Sub
'递归函数
Sub nq(n, s, x, E, CNO, q(), CM())
For i = s To E - x + n
q(n) = i
If n = x Then '当前组合的数字已经选完
CNO = CNO + 1
CM(CNO) = q
Else
nq n + 1, i + 1, x, E, CNO, q(), CM()
End If
Next i
End Sub
希望能解决您的问题。
MCE 中国
2025-03-12 广告
以下是虚拟筛选的简要流程图说明:1. **调研靶点**:确认是否有参考药物与结合模式信息。2. **建立模型**:基于靶点蛋白结构,参考已有药物结合信息或预测药物结合模式。3. **选择库源**:从多样性化合物库、上市药物分子库等中挑选合适... 点击进入详情页
本回答由MCE 中国提供
瓦片2000
2014-08-20 · TA获得超过1461个赞
知道小有建树答主
回答量:774
采纳率:0%
帮助的人:109万
展开全部
首先求出1到49之间的随机数利用“=INT(RAND()*48+1)”函数,再利用”&“把3个数合并,最后在由大到小排列,即可!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zl998100
2014-08-20 · TA获得超过731个赞
知道小有建树答主
回答量:1067
采纳率:50%
帮助的人:1086万
展开全部

我这个可以自定义的

第一列是数据源

第二列是 组合个数

更多追问追答
追问
这个工具可以输入不连续的数字吗?限制是多少个数字
追答
数字,汉字, 都随意输入的, 不需要连续
ALT+F11 打开代码窗口 可以把这个数组改大,就能适应更多的数据源,现在是10万的 存放结果
Dim arr1(1 To 100000, 1 To 1) '把分组后的结果放在arr1中
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式