ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 有什么方法能让excelVBA处理表格的速度达到至少每秒1万行以上?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 20:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
perfect131 发表于 2023-3-22 17:54
可能是你电脑配置不行

出大事了!出大事了!

我刚刚把那段简单的1万行加高的代码放到同一台电脑VMWARE虚拟机win10里面运行,用的是word2010版,2秒钟完成。
这虚拟机有起来比我的主机还要慢很多,但运行这个程序完成只要2秒。。我的实机word2013版本出啥问题了啊?要30秒?

截屏_2023-03-22_20-40-17.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 20:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
高个子 发表于 2023-3-22 18:49
极有可能是电脑问题

帮我看看21楼,确实有问题,咋回事啊?

TA的精华主题

TA的得分主题

发表于 2023-3-22 20:49 | 显示全部楼层
vistababy 发表于 2023-3-22 20:44
帮我看看21楼,确实有问题,咋回事啊?

是不是你的电脑软件太多了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 20:54 | 显示全部楼层
我又在虚拟机另一个win11系统里面试了下,用的是excel2016版本,也是2秒多。

TA的精华主题

TA的得分主题

发表于 2023-3-22 20:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
是不是自动计算拖慢了速度??

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 21:02 | 显示全部楼层
高个子 发表于 2023-3-22 20:49
是不是你的电脑软件太多了

逐渐查明真相。我把后台一些无关的程序关了,1万行只需要1秒甚至不到1秒完成。。速度神了。

我要查清楚是哪个程序搞的鬼。到时你们就知道了。


截屏_2023-03-22_21-00-11.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 21:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zxsea_7426 发表于 2023-3-22 20:56
是不是自动计算拖慢了速度??

不是,是某个程序引起的,我终止了一些无关程序发现问题了,速度最多1秒左右完成。
然后我会把程序一个一个通过退出或任务管理器终止,逮住它。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 22:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 vistababy 于 2023-3-23 00:19 编辑

原因竟然是一行有毒的代码,我不知道错在哪?
就是下面第一行代码,这行获得一个工作表总页数,加上这行,虽然通过msgbox显示出来,瞬间就获得了总页数的结果,但竟然会导致后面的处理时间从1秒升到30秒。而且只要运行过这行代码,在Excel不关闭的情况下,哪怕屏蔽这行代码,再运行此程序,速度也是30秒。。神奇啊。我搞不懂。
有大神知道原因吗?你们复制下面这段代码试一下。
好像没有别的方式获得一个工作表总页数了,这个是最常用的,但没想到这段代码这么坑。从来没有人发现?

oldpages = ActiveWorkbook.ActiveSheet.PageSetup.Pages.Count'就是这行有毒,获得总页数
MsgBox oldpages

Application.ScreenUpdating = False

tt = Timer
For i = 1 To 1000
    Rows(i).RowHeight = Rows(i).RowHeight + 5
Next
Application.ScreenUpdating = true
MsgBox Timer - tt




TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 22:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 vistababy 于 2023-3-23 00:18 编辑

我原来以为是某个后台软件引起的,没想到不是,竟然是一行代码毁所有。只要它运行过一次,Excel不退出,就会影响后面的所有代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-23 11:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我发现除了28楼提到的那行代码,有时候啥都没有干,重启了一下电脑,马上进excel运行那个宏,就用最简洁的那几行代码,还是会有30秒,但有时候才2秒。和后台软件没关系,和那行代码也没有关系。我彻底地蒙圈了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 05:44 , Processed in 0.032428 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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