ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 通过一题十解谈拓宽编程思路

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-4 21:21 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句
香川群子 发表于 2013-4-4 21:11
P2代码是你的出品么……呵呵。

为啥用: maxNum = Application.max(maxNum, arrPre(i, 1)) 来求最大值 ...

是的,因为这样的问题不涉及到大量数量,当时主要考虑通用性,没考虑效率问题,也没有优化~

TA的精华主题

TA的得分主题

发表于 2013-4-4 21:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2013-4-4 21:05
哦。这里我是想试一试,去掉这个判断对速度有多大影响。……

因为楼主附件例子ID是从1开始的,这样改对 ...

这样一改就失去通用性的意义了~

TA的精华主题

TA的得分主题

发表于 2013-4-4 21:36 | 显示全部楼层
本帖最后由 香川群子 于 2013-4-4 21:39 编辑
时光鸟 发表于 2013-4-4 21:24
这样一改就失去通用性的意义了~


呵呵,不是真的要改你的代码。只是在测试时间做比较时改的,后来忘了改回去……


…………
话说回来,你的代码算法我觉得很难优化了。

你还是认真看看 15楼yjh_27的代码,以及我写的两个数组代码吧。速度效率不是差了一点点。

这个就是算法的差别。dim 什么的作用是没有这么大的。




TA的精华主题

TA的得分主题

发表于 2013-4-4 21:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 时光鸟 于 2013-4-4 21:50 编辑
香川群子 发表于 2013-4-4 21:36
呵呵,不是真的要改你的代码。只是在测试时间做比较时改的,后来忘了改回去……

我工作中也只是偶尔用用这些提高些效率,其它的都很难用到~
来这里也只是对有点兴趣的东西写一写,写完了就丢那儿了,回过头来再去优化或研究的机会或时间就很少了,另外,不是说你修改我的代码,只是代码的初衷就注重通用性而已,如果通用性没有了,这代码就没有意义了,因为不涉及大量数据,所以对效率或最优算法什么的不会花时间去研究,除非程序执行时消耗的时间超出我的接受程度,也许这就是我和你,也是我和楼主之间的差别吧,很佩服你们有大把的时间和浓厚的兴趣来捣鼓和研究这些东西~
你的代码我有时间会去看的,谢谢~

TA的精华主题

TA的得分主题

发表于 2013-4-4 21:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我觉得奇怪的是,很多人可以想出很复杂的算法去让计算机做很多无用功……

我估计是这样的:
编写代码时其实大脑里面想的很简单,
而为了实现这个“简单”的想法,却需要让计算机一步一步去做很多重复无效的工作……


而我总是【动很多脑筋】去思考,以便让计算机去通过最最最最简单算法就能简单、高效无重复地完成工作。
这样长期实践下去,差别就产生了。


TA的精华主题

TA的得分主题

发表于 2013-4-4 21:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
时光鸟 发表于 2013-4-4 21:48
我工作中也只是偶尔用用这些提高些效率,其它的都很难用到~
来这里也只是对有点兴趣的东西写一写,写完了 ...

如果工作不很忙……我每天会有2-3个小时可以逛逛Excel Home,
帮帮新手的忙,或者找个有趣的题目研究一下……比打游戏打发时间好一点吧。呵呵。

TA的精华主题

TA的得分主题

发表于 2013-4-4 22:01 | 显示全部楼层
香川群子 发表于 2013-4-4 21:51
我觉得奇怪的是,很多人可以想出很复杂的算法去让计算机做很多无用功……

我估计是这样的:

一点都不奇怪,因为需求不一样,时间对每个人来说都是一样多,在一件事情上消耗大量时间,必定会在另外的一些事情上牺牲时间。你觉得奇怪是因为你只站在自己写程序的角度来想这些问题,你只去想你现在的成就感,你没去想你比别人多花了多少时间在这VBA上面?而别人可能正好利用这个时间做了另外一些有意义的事情,要知道,除了写代码之外的事情有很多很多,不单单是打游戏这一件事。比如我,我觉得花太多时间研究代码觉得是浪费时间,因为我喜欢看书~

TA的精华主题

TA的得分主题

发表于 2013-4-5 01:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-5 09:56 | 显示全部楼层
原以为要求简单,就没有特别说明。根据反馈,重新在2楼图片中添加了要求,并重新上传了附件。敬请大家谅解。
对于代码,人言言殊,难以强求一律,我在一楼也说了,此贴并非追求最优代码,而是唤起多角度思考的方式,至于有没有营养,大家自有理解。

TA的精华主题

TA的得分主题

发表于 2013-4-5 10:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 liucqa 于 2013-4-5 11:18 编辑
doitbest 发表于 2013-4-5 09:56
原以为要求简单,就没有特别说明。根据反馈,重新在2楼图片中添加了要求,并重新上传了附件。敬请大家谅解。 ...

对于VBA编程思路讨论,我的观点是这样的:

微软在开发Excel的时候,负责开发工作表功能和负责开发VBA功能的是两个团队,彼此在开发的时候没有统一的约定。典型的现象就是,工作表函数与VBA函数有并存的现象,而且同名函数功能不同。

从这个原因来看,本身Excel就提供了两个方向的工作思路(工作表对象和VBA对象),而这两个方向,可以放在一起进行调用。

然而,从编程讨论角度而言,我赞成使用单纯的VBA对象讨论,而不是使用调用Application的工作表对象的方法来讨论,因为前者才是为了编程而存在的。
换句话说:如果讨论编程思路,应尽量在VBA代码范畴内讨论,而不是加入VBA之外的其他同功能对象。这就好比,我们讨论VBA编程的时候,从不讨论VBA调用XLL、DLL加载项的思路,尽管后者更快,也更强大。
工作表对象就可以理解为VBA的同功能外挂,虽然这个外挂可能更方便,但我依然不建议混编(除非你需要里面的复杂数学函数),这对学习VBA编程没有多大好处(初学者或者急功近利者例外,勿喷)!



当然,我说这些话,并不是否定楼主的工作,因为我也是从VBA+工作表对象的程序混编中走过来的。
只有历经了那个阶段,才使我对Excel对象的整体结构有了深刻的理解。

理解之后,回首再看自己的代码,会发现需要进步的地方还有很多很多,而我们的眼光应当放得更远、更专业、更有规矩...


仅以此文给那些希望在VBA道路上走得更远的同胞!


顺便回答楼下的问题:
你说的是解决问题的思路,我说的是学习vba编程的思路,这和血统论完全没关系嘛,认真看俺写的红色字。


幸好俺从不上函数版

点评

呵呵。 如果你见过函数版对一个问题用各种函数进行无穷无尽的各种解法探索的劲头, 你就能明白楼主的《一题十解》的由来了。几乎是一样的→把函数版的习惯带到VBA板块来了。呵呵。  发表于 2013-4-5 11:09
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-20 13:51 , Processed in 0.041638 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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