ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 恳请! 算法高手…出手帮忙解难题…

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-22 13:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
648555205 发表于 2018-1-21 13:50
我模拟了些数据测试了下,模拟数据控制在10%左右的重复,3000行100列花了300多秒!

老师,

数据行数是36833, 但试不了, 有报错…溢位…,
请问代码 , 对格内的数字.文本(中文及英文).符号.个数等等, 有限制吗?
ERRO.jpg

TA的精华主题

TA的得分主题

发表于 2018-1-22 16:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代码写好了,但是只限于3万多行,100多列,不重复元素小于1万的计算条件。

运算中,按每一行计算、匹配、排序,输出本行结果为一个独立的txt文件。
结果如附件。

Documents.zip

1.45 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-1-22 16:22 | 显示全部楼层
microyip 发表于 2018-1-19 14:31
这个不就是排列组合的问题而已,论坛里有很多案例。把标题写得那么夸张“挑战”,最终还不是想找枪手?

对这个问题的理解是:

1. 循环遍历m行
   2. 以该行各个元素为检查对象,循环遍历所有其它行,记录元素匹配个数
   3. 按匹配个数最多、元素个数最多的顺序返回、输出查询结果

做法很简单,写个双循环(实质为行对行、列对列的4层循环)即可完成,
但是为了提高计算效率,需要做很多细致的算法改进。

最快和最慢的,可以相差几十到几千倍。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-22 17:05 | 显示全部楼层
香川群子 发表于 2018-1-22 16:22
对这个问题的理解是:

1. 循环遍历m行

谢谢…香川权威出手帮忙…

...膜拜!

TA的精华主题

TA的得分主题

发表于 2018-1-22 18:40 | 显示全部楼层
On_fire 发表于 2018-1-22 13:40
老师,

数据行数是36833, 但试不了, 有报错…溢位…,

我代码里用的是int类型,不能超过32767

如果超过了,把Integer换long

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-23 10:56 | 显示全部楼层
648555205 发表于 2018-1-22 18:40
我代码里用的是int类型,不能超过32767

如果超过了,把Integer换long

谢谢老师…
不好意思, 证明我是菜鸟...


用了小部分原始数据(500, 100)做测试…
时间用了250,


FIND在原始数据, 找几个重复值, 再对比结果,
不知道为甚么, 发现输出的结果少了一些...
(即缺少一些有重复值的行)…

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-23 12:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2018-1-22 16:22
对这个问题的理解是:

1. 循环遍历m行

香川老师,

思路是不是像你这个帖?

http://club.excelhome.net/thread-1145694-1-1.html

TA的精华主题

TA的得分主题

发表于 2018-1-23 13:54 | 显示全部楼层
本帖最后由 香川群子 于 2018-1-23 14:48 编辑
On_fire 发表于 2018-1-23 10:56
谢谢老师…不好意思, 证明我是菜鸟...

用了小部分原始数据(500行, 100列)做测试…时间用了250秒,

500行100列的测试数据,上传附件。

我来测试一下。
估计应该是不含输出耗时0.05-0.5秒左右完成。
含输出到txt文件,大约1-10秒(具体和数据构成有关)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-23 14:12 | 显示全部楼层
香川群子 发表于 2018-1-23 13:54
500行100列的测试数据,上传附件。

我来测试一下。

谢谢老师, 请看看文件

原始数据的其中一列, 36832,
请测试一下, 感觉这比较

MatchTest-Test.rar

521.78 KB, 下载次数: 7

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-23 15:03 | 显示全部楼层
本帖最后由 On_fire 于 2018-1-23 15:20 编辑
On_fire 发表于 2018-1-23 14:12
谢谢老师, 请看看文件…
原始数据的其中一列, 共36832行, 请测试一下, 感觉这比较靠谱…

依35楼, 老师的建议, 把原代码所有的Integer换long

同样的数据(其中一列), 再运行一次, 没再比对结果, 时间用了2122秒 (约35分钟)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 15:21 , Processed in 0.042579 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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