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 14:35 | 显示全部楼层
vistababy 发表于 2023-3-22 11:27
你这是统一高度?如果一万行,每一行的高度都不一样,然后每一行的高度在该行的基础上增加10,看看速度? ...


你问的就是批量行高
渐渐的开始跑题了,excel 里面拉一下行高,瞬间完成但在vba里面批量调一下行高,咋变成 每一行的高度都不一样,然后每一行的高度在该行的基础上增加10???
不过这也很快 也就 2秒左右
1.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 16:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 vistababy 于 2023-3-22 17:11 编辑
perfect131 发表于 2023-3-22 14:35
你问的就是批量行高
渐渐的开始跑题了,excel 里面拉一下行高,瞬间完成,但在vba里面批量调一下行高 ...

是批量行高啊。。每一行不一样,批量增加,也是批量行高啊。不是吗?

你能拿一个文件作试验吗?我拿你的代码在新文件试验了一下,第一次很快,2、3秒,后面弄1000行就花了6、7秒。
我错在哪?
我的电脑是I3 6100,内存24GB,集显,固态英特尔760P 256G,win10 64位系统。
为啥差这么远??

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 17:40 | 显示全部楼层
本帖最后由 vistababy 于 2023-3-22 17:42 编辑
perfect131 发表于 2023-3-22 14:35
你问的就是批量行高
渐渐的开始跑题了,excel 里面拉一下行高,瞬间完成,但在vba里面批量调一下行高 ...

我用你的代码做了一下试验,在一个新excel文档,1000行花了3、4秒,10000行花了30秒。为什么?

截屏_2023-03-22_17-40-19.png


截屏_2023-03-22_17-42-00.png

TA的精华主题

TA的得分主题

发表于 2023-3-22 17:54 | 显示全部楼层
vistababy 发表于 2023-3-22 17:40
我用你的代码做了一下试验,在一个新excel文档,1000行花了3、4秒,10000行花了30秒。为什么?

可能是你电脑配置不行

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 17:59 | 显示全部楼层
perfect131 发表于 2023-3-22 17:54
可能是你电脑配置不行

我的电脑CPU是I3 6100(双核四线程),集显,内存DDR4  24GB,固态英特尔760P 256G。而且我照网上方法在excel设置里面改什么多线程、自动改手动,都没有用啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 18:01 | 显示全部楼层
perfect131 发表于 2023-3-22 17:54
可能是你电脑配置不行

你的是什么电脑?2秒??这速度神了啊。。啥配置?

TA的精华主题

TA的得分主题

发表于 2023-3-22 18:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-22 19:26 | 显示全部楼层
高个子 发表于 2023-3-22 18:49
极有可能是电脑问题

问题在哪呢?win10 64位,平常使用没有任何问题啊。。也没觉得卡。

TA的精华主题

TA的得分主题

发表于 2023-3-22 19:30 | 显示全部楼层
提高Excel VBA处理表格的速度是一项复杂的任务,因为它涉及多个方面的优化。以下是一些优化Excel VBA处理表格速度的方法:

使用数组代替循环:使用数组来存储表格数据,然后使用循环逐一填充数组的元素。使用数组可以减少Excel VBA的处理时间,因为它可以在内存中更快地操作数据。

关闭计算功能:在处理大量数据时,关闭Excel的计算功能可以显著提高Excel VBA的处理速度。使用以下代码行关闭计算功能:

Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationManual
做完任务后,使用以下代码行重新启用计算功能:

Application.Calculation = xlCalculationAutomatic
Application.Calculation = xlCalculationAutomatic
关闭屏幕刷新:使用以下代码行关闭屏幕刷新功能:
Application.ScreenUpdating = False
Application.ScreenUpdating = False
做完任务后,使用以下代码行重新启用屏幕刷新功能:

Application.ScreenUpdating = True
Application.ScreenUpdating = True
优化循环次数:使用Exit For、Exit Do等语句,减少循环次数。此外,尽可能少使用循环嵌套。每个循环都需要时间进行迭代,所以循环嵌套越多,处理数据的时间就越长。

使用合适的数据类型:使用合适的数据类型可以提高Excel VBA的处理速度。例如,如果您只需要处理整数,使用整数类型,这比使用浮点类型可以更快地进行计算。

对数据进行排序:在处理数据之前,将数据按特定的顺序排序,这样可以使Excel VBA更快地搜索和读取数据。

禁用事件:在处理数据时,禁用Excel VBA中的事件处理程序,因为事件处理程序可能会导致Excel VBA的处理速度降低。使用以下代码行禁用事件:

Application.EnableEvents = False
Application.EnableEvents = False
做完任务后,使用以下代码行重新启用事件处理程序:

Application.EnableEvents = True
Application.EnableEvents = True
请注意,优化Excel VBA处理表格速度的方法因情况而异。因此,仔细评估您的需求,并使用最适合您的情况的方法。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-3-22 19:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vistababy 发表于 2023-3-22 19:26
问题在哪呢?win10 64位,平常使用没有任何问题啊。。也没觉得卡。

win10 64位垃圾配置也没超过1.5秒
捕获.JPG
捕获.JPG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 05:35 , Processed in 0.047224 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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