ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1020|回复: 7

[求助] 循环计算求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-27 20:35 | 显示全部楼层 |阅读模式
见附件,我想实现的功能是,求出sheet1,任意6个数字的和等于15的数所在位置的组合;然后把6个数位置在指定列里面一行一行的罗列出来;
请高手给用VBA方式指点


模板.png

TA的精华主题

TA的得分主题

发表于 2018-7-27 20:54 | 显示全部楼层
http://club.excelhome.net/thread-1385584-1-1.html
这个帖子是凑数的一个案例,楼主可以参考下的

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-27 21:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢提醒;
这个如果基数多比如24个,取出任意6个,它的组合就有24*23*22*21*20*19/(6*5*4*3*2*1)=134596种可能

TA的精华主题

TA的得分主题

发表于 2018-7-28 07:57 | 显示全部楼层
关于数学方面的问题直接问香川老师

TA的精华主题

TA的得分主题

发表于 2018-7-28 08:22 | 显示全部楼层
Sub t()
Dim arr, a%, b%, d%, e%, f%
Range("a1:e7").Font.Size = 11
arr = Range("a1:e7")
0 a = Int(Rnd() * 7) + 1
b = Int(Rnd() * 7) + 1
d = Int(Rnd() * 5) + 1
e = Int(Rnd() * 5) + 1
f = Int(Rnd() * 5) + 1
If a = b Or d = e Or e = f  or d=f Then GoTo 0
If arr(a, d) + arr(a, e) + arr(a, f) + arr(b, d) + arr(b, e) + arr(b, f) = 15 Then
Cells(a, d).Font.Size = 25
Cells(a, e).Font.Size = 25
Cells(a, f).Font.Size = 25
Cells(b, d).Font.Size = 25
Cells(b, e).Font.Size = 25
Cells(b, f).Font.Size = 25
Else
GoTo 0
End If
End Sub



数据放在A1:E7

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-28 09:43 | 显示全部楼层
719404338 发表于 2018-7-28 08:22
Sub t()
Dim arr, a%, b%, d%, e%, f%
Range("a1:e7").Font.Size = 11

嗯,大体上就是这种实现。如果还能一次性把所有符合组合的数的位置罗列出来就更好了:
例如
B1.D1.E1.B3.D3.E3
A1.D1.E1.A3.D3.E3

TA的精华主题

TA的得分主题

发表于 2018-7-28 11:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
D2:M2区域数组公式{=INDEX(MMULT(N(RANDBETWEEN(TRANSPOSE(ROW(INDIRECT("1:"&A$2)))^0,B$2)=ROW(INDIRECT("1:"&B$2))),ROW(INDIRECT("1:"&A$2))^0),TRANSPOSE(ROW(INDIRECT("1:"&B$2))))

D2:M11格式化 字色白色 隱藏=ISNA(D2)

O2:O11=SUMIF(D2:M2,">0")

区域数组公式 :公式下D2-->圈選D2:M2-->游標放公式尾-->shift+ctrl+enter三鍵一起按-->隨機產生D2:M2列-->下拉 ,按F9就變
4772.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-30 17:33 | 显示全部楼层
hcm19522 发表于 2018-7-28 11:40
D2:M2区域数组公式{=INDEX(MMULT(N(RANDBETWEEN(TRANSPOSE(ROW(INDIRECT("1:"&A$2)))^0,B$2)=ROW(INDIRECT( ...

这个没是我想要的方法
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 06:55 , Processed in 0.024057 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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