ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将vba代码优化,提高运行效率!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-7-27 14:26 | 显示全部楼层 |阅读模式
优化代码.zip (1.65 MB, 下载次数: 65)
表格里面有许多七拼八凑的代码,本人初学vba,对数组字典不怎么会用,就退而求其次,代码和公式混搭,主要是用代码循环逐行提取数据用的,所以有好多公式,造成运行速度慢,如果取消公式自动运算,输出的数值又不对,会发生错误,主要是把里面的一个宏给改进下就好了,让运行速度快点,宏的名字叫  “运行”,这个代码调用单元格太多,太慢了,运行200行要40多秒!要命了,工作太慢了,效率太低!不胜感激!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-28 10:16 | 显示全部楼层
说明:
      1、sheets(“数据表”)=小型数据库(注意数据表中都是函数填充的,宏代码第一步先将数据表的函数公式复制粘贴转换为数值再调取速度明显提   升),sheets(“运行”)表中也有许多函数,因为vba代码不熟悉所有只能采用这种投机取巧的办法来写代码,初学者没办法的办法了也是!
      2、逐行从sheets(“数据表”)第三行起开始到最后一行,调取每行数值,然后这些数值填到sheets(“运行”),经过函数公式运算,再逐行复制到sheets(“预览”)中,这样子就存在一个问题循环中不断操作单元格,造成运行太慢了
      3、sheets(“运行”)中的函数,主要有Hlookup Vlookup if 函数,如果把运行工作表中的函数转换为vba代码运行,直接存储到sheets(“预览”)工作表,那样速度应该有质变。
      4、但是水平有限啊,做不到,原来上传表格时表达也不清楚,附件里面表太乱,造成大家读取困难,现更改如上,望大家帮忙给修改下,小弟不胜感激。

修改版 - 副本.zip

731.66 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2020-7-27 14:33 | 显示全部楼层
人才啊!我看着就头大了,你还能写出来那么多,佩服!

TA的精华主题

TA的得分主题

发表于 2020-7-27 14:39 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-27 14:44 | 显示全部楼层
vba数组和字典写起来太麻烦了,这个单纯数组和字典来说,我粗浅的看了下“大蟒蛇”比他好用啊,啥时候微软更新下vba,让我的脑袋不至于这么绕!

TA的精华主题

TA的得分主题

发表于 2020-7-27 14:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-7-27 14:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我测试你代码的效率:
1、第一次运行用了18秒(不含保存文件,这一步我放弃了),第二次15秒,大致在15-20秒之间浮动;
2、删除所有其他无关的表,只保留三个关联的表,运行时间只要7-8秒,这说明其他表可能有关联的函数会拖后腿;
3、把三个表的所有函数全部转换为值(用值粘贴),再运行代码就只要3-4秒;

所以我感觉代码速度其实还行,拖后腿的主要是里面的函数太多;

TA的精华主题

TA的得分主题

发表于 2020-7-27 16:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据量太大,看着太乱,没耐心看
要理清需求、思路、数据逻辑关系,这样别人才能帮到你

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-7-27 16:51 | 显示全部楼层
其他的表格其实也是有用的,日常工作搞得这么多表格,我吧sheet(“数据表”)的函数公式复制粘贴为数值,在运行一下就少了好多时间,现在大约8秒了,原来要40秒,感谢老铁提供宝贵建议,还有别的办法吗,在线等兄弟们支持。

TA的精华主题

TA的得分主题

发表于 2020-7-27 16:51 | 显示全部楼层
不喜欢看别人的代码修改,没个人的思路不一样,而且我看到有10多个模块,每个模块都一大堆过程,看的头痛

TA的精华主题

TA的得分主题

发表于 2020-7-27 17:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 08:12 , Processed in 0.050019 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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