ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

剩余定律的自定义函数解法

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-21 17:44 | 显示全部楼层
本帖已被收录到知识树中,索引项:其他结构和算法
本帖最后由 香川群子 于 2012-3-21 17:46 编辑
xiaomage1 发表于 2012-3-21 16:30
老师,您好,我有个关于排列组合的问题,liucqa 老师让我来请教您,您看有时间帮我看一下,多谢啦!!

...


问题看了。

应该有解决办法。

最好请你在附件中,写一些实际数据。

我好用来测试。


用我的附件吧。

NumCombin.zip (4.91 KB, 下载次数: 33)


TA的精华主题

TA的得分主题

发表于 2012-3-21 23:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

RE: 剩余定律的自定义函数解法

香川群子 发表于 2012-3-21 17:44
问题看了。

应该有解决办法。

恩,谢谢老师,附件如下:

NumCombin11.rar

5.07 KB, 下载次数: 14

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-21 23:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代码写到一半。先上传一个半成品吧。

明天继续。

万千百个十组合.rar

10.67 KB, 下载次数: 18

点评

真辛苦,以后不给你找活了  发表于 2012-3-21 23:27

TA的精华主题

TA的得分主题

发表于 2012-3-22 00:21 来自手机 | 显示全部楼层
香川群子 发表于 2012-3-21 23:18  代码写到一半。先上传一个半成品吧。   明天继续。

恩,谢谢老师!

TA的精华主题

TA的得分主题

发表于 2012-3-22 07:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主讲的是“孙子剩余定理”,收藏了,仔细研究。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-22 08:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
废了不少力气,把小马哥1的【万千百十个】五位数字组合分析程序编写完成了。

考虑到程序接口方便,我把数据形式又改了。
现在是改成,各种数字直接按ABCDE,即【万千百十个】方式拆开填入相应列。

这样计算就很方便了。


不过,如果你的原始数据就是ABC等代码,以及直接3位数值形式,
也问题不大。可以用代码自动整理数据,代码我已经写好了。在sheet3里就是整理结果。


万千百个十组合分析.rar

35.78 KB, 下载次数: 41

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-22 08:32 | 显示全部楼层
这个组合分析的要点,是对各种类型的组合不要产生遗漏。

主要思路如下:
每一组数值,如ABC,首先要检查它们和其它数字组合中,
要求其中有2个是相同的,然后才能符合条件,让新元素加入。

那么,假设对于ABC,则它任取2个以后的组合形式一共有3种:
1. A - BC
2. B - AC
3. C - AB

接着,依次检查所有数据中,符合有2个值相同的组合,即:
1. A - BC  →  检查 BC-D 或 BC-E
2. B - AC  →  检查 AC-D 或 AC-E
3. C - AB  →  检查 AB-D 或 AB-E

然后,对于这新的6种组合,都要再次进行检查:
举例,如对于A-BC-D 组合,且符合BC相同时,可以确定D值有效,
接下来,对于BCD这3个值的任意取2数进行组合检查,则有:
1. B -CD  →  CD-E  (即找到有CD也符合相同时,可最终确定 E值)
2. C -BD  →  BD-E  (即找到有BD也符合相同时,可最终确定 E值)
3. D -BC  →  BC-E  (即找到有BC也符合相同时,可最终确定 E值)

………………

这样,把第一步得到的前面6种组合,即:
1. A - BC  →  检查 BC-D 或 BC-E
2. B - AC  →  检查 AC-D 或 AC-E
3. C - AB  →  检查 AB-D 或 AB-E

其中每一个组合再产生3种可能的组合进行检查,就能得到所有的符合条件的组合结果了。

…………

总之,对于m个原始3位数的值,
都要检查 6*3*m=18*m 种组合。




为了高效计算,我在sheet2中做了辅助参数表,并使用了字典定位方式。
最后的计算速度倒还比较快。


以上。



TA的精华主题

TA的得分主题

发表于 2012-3-22 14:23 | 显示全部楼层
本帖最后由 dgxsdr 于 2012-3-22 14:25 编辑

比较难理解,写了个不要动脑筋的
Sub aa()
Dim i As Integer
    For i = 1 To 10000
        If i Mod 5 = 4 And i Mod 7 = 6 And i Mod 3 = 2 And i Mod 11 = 0 Then
            MsgBox i
            Exit Sub
        End If
    Next i
    MsgBox "没有找到合适的数字"
End Sub


TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-22 15:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dgxsdr 发表于 2012-3-22 14:23
比较难理解,写了个不要动脑筋的
Sub aa()
Dim i As Integer

嗯。确实如此。

用遍历方法强力破解,计算速度其实很快的。


…………
不过,我是从数学逻辑解题的角度来看,如何用代码实现。
实际计算次数是很少的几步。

TA的精华主题

TA的得分主题

发表于 2012-3-22 15:30 | 显示全部楼层
香川群子 发表于 2012-3-22 15:09
嗯。确实如此。

用遍历方法强力破解,计算速度其实很快的。

下载慢慢学习,感谢分享!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 05:56 , Processed in 0.043040 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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