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

2024-05-26 02:52

本文主要是介绍EXCEL VBA终极提速,超级公式,算法优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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分钟

这篇关于EXCEL VBA终极提速,超级公式,算法优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003339

相关文章

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

如何利用Python实现给Excel表格截图

《如何利用Python实现给Excel表格截图》这篇文章主要为大家详细介绍了如何利用Python实现给Excel表格截图功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 我搜索了网络上的方案,感觉把 Excel 表格转换为 html 再用 platwright 截图是比China编程较顺

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每