首页 > 编程语言 >EXCEL VBA终极提速,超级公式,算法优化

EXCEL VBA终极提速,超级公式,算法优化

时间:2024-05-26 13:30:05浏览次数:19  
标签:VBA 用时 单元格 EXCEL 毫秒 终极 数据 写入 字典

1,简化公式,200个字变成10个字
有很多公式写的很长,看不懂很难维护,如果改成VBA代码,简化成一个超级函数,方便维护,还可以给多个工程共用,实现模块化开发
2,计算提速。有些vba运算很慢,需要几分钟到几小时,用好的方法,运行速度可以减到1分钟以内甚至10秒以内。
这2天做了一个3万个左右的订单表和产品销售统计的算法。
原来的主人,运行后就卡死了,后面按10个产品去查找订单,需要1秒左右,那3万个产品就要3000秒,差不多一个小时才能完成。
后面采用了字典的方法代替每个单元格去循环对比,速度提高了100倍,只需要30秒左右。
再后来发现写入3万行2列数据也要10秒左右,采用变量绑定直接写入,只需要60毫秒。
经过终极优化,最终只需要200毫秒就完成了全部运算。
速度又提高了150倍,比最初的算法速度提高了1.5万倍。

如果还能采用多线程进行计算,估计还能提高不少。不过总体时间只有0.2秒了,没必要再折腾了。他的想法是30秒以内就很好了。

2.3万个数据转成字典Key,不引用Dictionary,用时:5281毫秒
引用的话只要39毫秒,快了135倍

写入6.3万个excel单元格用时=2304毫秒
直接用数组方式改变一批单元格只要57毫秒,快了39倍
================
V12-引用Dictionary
 数据行数=28627,条件末行=22943
 条件转字典用时:39毫秒
 取产品+数量+金额 数据用时:16毫秒
提取所有数据用时=67毫秒
统计用时=85毫秒
写入单元格(超级法)用时=57毫秒

【借方V12】 >用时209毫秒,约0.003分钟
-----------
'v12不引用Dictionary
数据行数=28627,条件末行=22943
 条件转字典用时:5281毫秒
 取产品+数量+金额 数据用时:20毫秒
提取所有数据用时=5310毫秒
统计用时=6588毫秒
写入单元格(超级法)用时=59毫秒
借方V12 >用时11957毫秒
==============
2.86万个订单,查找的产品2.29万个
不用字典,纯循环查找用时17.3秒
字典生成39毫秒,查找用时85毫秒

数据行数=28627,条件末行=22943
条件转字典用时:0毫秒
取产品+数量+金额 数据用时:16毫秒
提取所有数据用时=29毫秒
统计用时=17252毫秒
写入单元格(超级法)用时=62毫秒

【借方V12】 >用时17343毫秒,约0.289分钟

标签:VBA,用时,单元格,EXCEL,毫秒,终极,数据,写入,字典
From: https://blog.csdn.net/xiaoyao961/article/details/139203863

相关文章

  • react框架对Excel文件进行上传和导出
    1.首先需要安装xlsx第三方的库库引入插件npminstallxlsx在react引入import*asXLSXfrom'xlsx';1,首先设置jsx部分的 以下代码包含有导入excel文件和导出excel文件,读着可以根据需要,自己选择想要实现的功能 代码如下(示例)://importReactfrom'react';importR......
  • Python 潮流周刊#52:Python 处理 Excel 的资源
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期周刊分享了12篇文章,12个开源项目,赠书5本《网络是怎样连接的》,全文1......
  • 用 Python 编写网络爬虫:从网页获取数据并存储到 Excel 文件
    在本篇博客中,我们将介绍如何使用Python编写一个简单的网络爬虫,用于从网页中提取数据,并将这些数据存储到Excel文件中。我们将使用Python中的一些库来实现这个功能,包括urllib.request、BeautifulSoup和openpyxl。1.网络爬虫的基本原理网络爬虫是一种程序,可以自动访问......
  • 在excel中使用python 快速作图示例
    前言Excel中可以使用python算是一个旧闻了,是python之父GuidovanRossum加入微软的重要产品。刚出来的第一时间我也尝鲜了,最近作图的时候,再次使用了这个功能,感觉非常方便,推荐大家也用一下。优点:Python在云端运行,无需部署环境。可以编写脚本来自动化日常的Excel任务......
  • 「终极收藏」前端开发必备:超全JavaScript公共方法大全
    目录引言1安装js-tool-big-box工具包1.1安装1.2截至目前的方法集合 2时间日期类 2.1更灵活的年月日时分秒2.2 日期时间转换2.3个性的时间组合 2.4 某个时间距离现在2.5 平年还是闰年2.6指定月份的天数 2.7属相2.8获取指定年份的法定节假日 3......
  • 【资料分享】你敢相信这些高大上的BI仪表盘都是用EXCEL做出来的?!
    引言现在大家都知道数据可视化、数据看板,几乎每个公司部门都有仪表盘的需求。近年来,学习可视化软件的人也越来越多,国外Tableau、PowerBI就是这一领域的领先者,而国内也有不少厂家在研发数据可视化软件,比如帆软是目前国内做的比较好,同时网易、腾讯等大厂也有在推出自己的可......
  • VBA_DIM申明
    在VBA(VisualBasicforApplications)中,Dim语句用于声明变量。Dim是"Dimension"的缩写,声明变量是定义变量的名称和类型,使得它们可以在代码中存储和操作数据。使用Dim语句有以下几个主要目的:1.声明变量类型通过声明变量类型,告诉VBA如何存储和处理变量的数据。这可以提高代......
  • VBA_命名规则
    在VBA(VisualBasicforApplications)编程中,遵循良好的变量命名规则不仅能提高代码的可读性,还能减少错误和维护难度。变量命名规则使用有意义的名称:变量名应该清晰描述其用途或内容。例如,使用totalAmount而不是x。遵循CamelCase或PascalCase:在CamelCase中,第一个单词......
  • VBA_录制宏
    在VBA(VisualBasicforApplications)中,录制宏是一个强大的工具,可以自动生成VBA代码,帮助你快速自动化常见的任务。录制宏的步骤打开Excel并选择工作表:打开Excel应用程序并选择你希望在其中录制宏的工作表。开始录制宏:在Excel中,转到“开发工具”选项卡。如果你没有看到......
  • EXCEL单元格,只有双击后才会变正常
    选中整列,“数据”--->“分列”--->“分隔符号”--->“下一步”--->“tab键”--->“下一步”--->“常规”--->“完成”如经过以上步骤后数值未能正常显示,选中整列,“设置单元格格式”---->“1234”---->小数位数改为“0”--->“确定”。......