首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vba新姿势,如何让vba的数据处理超越Python

只要能提高工作效率,我非常乐意学习,也从不只看重某一种工具。 但是今天我要首先替 vba 说一句公道话,难道Excel数据处理任务的vba代码,真的不可能做到像 pandas 一样简洁直白?...为什么python比vba更适合自动化处理Excel数据? 但是,vba 真的就不能做到"封装固定逻辑的同时,给予使用者放入自定义逻辑" ?...红框是本需求的关键逻辑 注意了,他是在固定逻辑的循环里面 当然也可以先排序,遍历判断边界。...以后你在新项目中要使用,只需要导入这个模块就可以。 这就是 vba 中实现插入逻辑的实现方式,非常简单。...---- 需求2:按 "性别"、"船舱等级",把数据拆分到不同的工作表,工作表名字使用"性别(值),船舱等级(值)" 先看 pandas : 再看vba: 与之前需求变动非常少,因为本身需求表达变动也不多

3K10

VBA调用外部对象01:字典Dictionary

当你发现不停的用For循环来处理数据速度的受不了了,你肯定会想怎么才能提高一些效率。...比如前面我们说到的对比2个表数据,我们是使用For循环去逐个的对比判断,如果能有1个东西让我们可以快速的在一组数据里找到需要的、或者是找不到的时候返回false的话,那我们就不需要用For循环了,那有没有这种东西呢...是的,今天要说到的字典就是这么一个东西,作为1个新手,可能你只需要知道它有快速找到某个数据的功能就可以了。...CompareMode:是设置文本的对比方式的,主要就是是否区分大小写。...,你可以多加些数据对比程序运行的速度,一定会很惊奇字典查找数据的速度

3.2K40
您找到你想要的搜索结果了吗?
是的
没有找到

当AI遇到Excel

而且,Office的对象、属性、方法确实非常多,要想按需写出能完成任务的代码,或者把ExcelHome技术论坛借鉴来的代码修改到能完成自己的任务,都需要足够的时间学习和实践。...比如,现在需要按照月份把下面这张工作表拆分为不同的工作表。 我们如果简单的提问,“用VBA按照月份把我的表格拆分成不同的工作表”。...按我的经验,得到正确代码的可能性不高,因为ChatGPT完全不了解你现有的表格,也不了解你到底要怎么拆分。 这种时候,我们就要给出更清晰明确的指令。 这个例子的回复,咱们就不展示了。...我们需要一些基础,再来用AI,才能真正用好AI。 另外,ChatGPT是一种生成式的AI,不是传统意义上的知识库。 所以,如果你用同样的问题多次提问,可能每次得到的答案都不完全相同。...所以,本书的内容也适用于这些模型。

26120

二 详解VBA编程是什么

VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化 2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序. 3....* VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化. * VBA可以称作EXCEL的”遥控器”. VBA 究竟是什么?...你可能有些疑惑.好,让我们看看VBA的语句吧. 1、选择”工具”-“宏”-“宏”,显示”宏”对话框。 2、单击列表中的”改变颜色”,选择”编辑”按钮。...现在可以看到,编辑录制的宏同样非常简单。需要编辑宏是因为以下三个方面的原因。 一:在录制中出错而不得不修改。 二:录制的宏中有多余的语句需要删除,提高宏的运行速度。 三:希望增加宏的功能。...思考: 1、VBA只能用于EXCEL? 2、VBA是基于哪种语言? 3、说说EXCEL和VBA的关系. 4、为什么要用宏?

5.6K20

数组Array

比如你写个程序,要处理1000个数据,我们不可能去写1000个变量去处理,我们需要的是用1个数组来存储数据。...不过以后程序写多了,你会发现从0开始在一些循环、取余数等等操作中还是非常方便的。...3、举例: 继续说Function里面的例子,我们当时是用For循环从1到100的一个一个的读取单元格的数据来处理,这种处理方法在碰到数据量比较大的时候,你会明显感觉到程序的运行速度很慢,这是因为VBA...处理Range对象的时候,一个一个的读取是非常的,因为每一个Range对象其实它都有很多的方法和属性,而我们需要的只是它的Value属性。...就像我们只需要1棵树,却要操作整个森林,这对程序的运行速度影响是非常大的。 其实Excel VBA已经帮我们做好了一个好的方法,那就是用数组一次性的把Range对象的Value属性读取出来。

2K20

使用VBA基于图标集进行筛选

标签:VBA Excel一直在改进自动筛选功能。可能和许多开发人员一样,当设置了条件,Excel为你进行数据筛选时,Excel会进行循环。...当需要在数千行中循环时,此方法就会出现的问题,大大减慢你的过程。相比之下,在VBA中使用自动筛选速度非常快,小列表和大列表之间的时间差可以忽略不计。...10 End Sub Sub ClearIt() ActiveSheet.AutoFilterMode = False End Sub IconSets(1)与上图1所示的箭头图片相关,仅适用于此图标集...如果试图将此代码改编为外观不同的图标集,则需要获取与使用的图标集相关的索引号。VBA代码-Item(1)与红色向下箭头相关,(2)与黄色箭头相关,(3)与绿色箭头相关。 过程效果如下图2所示。...图3 该图标集的编号是5,相应的VBA代码如下: Sub RedDownArrowV2() '红色 [K10:K100].AutoFilter 1, ThisWorkbook.IconSets(

93320

常用功能加载宏——快速定位合并单元格

在Excel表格里,合并单元格会给使用过程带来很多麻烦,但是有时候为了排版好看,又需要用到合并的功能。 特别是有时候从外部收集到的表格,总有人喜欢使用合并单元格!...有时候做数据处理的时候,会碰上一些因为合并单元格而造成的问题: ? 这种情况,取消合并单元格就能够解决问题。 但是,如果表格数据较多,靠眼睛去看,要想很快的找到合并单元格就没那么容易了。...让我们看看用VBA如何来实现一个快速定位合并单元格的功能,效果: ?...Next rng End If Set rng = Nothing Set selectRng = Nothing End Sub 可是,如果表格太大,循环去判断会有点...,怎么去加快速度

1.6K20

一起学Excel专业开发02:专家眼中的Excel及其用户

学习Excel技术,关注微信公众号: excelperfect 对于大多数人来说,使用Excel来做的工作就是在单元格中输入数据,进行一些格式化制作成报表输出,在这个过程中,可能会使用一些公式,可能会使用图表展现数据...,也可能会使用VBA进行一些自动化数据处理工作。...工作表:用于展示 在日常工作中,我们会很自然地在工作表单元格中输入数据,进行数据分析和处理,制作报表输出,这是我们通常的做法。Excel丰富的内置功能,已让我们的这种做法非常容易。...我们需要进一步做的是提高电子表格界面设计能力,灵活熟练地运用Excel提供的功能,充分发挥并拓展Excel所提供的功能,在工作表中添加一些结构,使其变为一个简单易用的用户界面。...工作表:用于程序数据的存储 在程序代码中,在程序代码处理中,经常要用到一些数据,而工作表就是一个天然的数据存放地,我们可以在工作表单元格中存放数字、文本、表格或图片,供程序使用,而VBA程序代码可以方便地访问这些数据

4.3K20

VBA实现Excel函数01:VLOOKUP

很多学习VBA的应该都是在使用了一段时间的Excel之后,想弥补一些Excel本身的不足、或者是实现一些自动化操作。...函数是Excel里非常重要的一个功能,所以,我们结合Excel的函数,用VBA去实现一些常用的函数功能。...Excel的函数其实在底层肯定也是一段写好了的程序,只是我们看不到 它的实现过程,我们用VBA实现这些函数的功能,多半会比内置函数很多,而且考虑的情况也不够全面,但我们主要是学习一些思路。...要实现这个功能,最简单的自然是用lookup_value与table_array里的第一列一个一个的比对,找到了相同的就返回col_index_num列的值,那显然这里需要用到For循环循环需要1个范围...3、小结 我们通过自己写这么一个还非常不完善的MyVlookup函数,可以看出,平时看起来比较简单的Excel内置的VLOOKUP函数,其实是非常完善的,它几乎考虑到了我们所以可能输入的错误情况。

6.6K31

个人永久性免费-Excel催化剂功能第47波-VBA开发者喜爱的加密函数类

VBA的确是个很不错的编程工具,寄生在OFFICE内,无需安装庞大的开发环境,即开即用,方便灵活,能实现的事情也很多,但毕竟VBA是微软停止更新维护将近20年的一种语言,计算机的世界发展速度有多快大家有目睹...,今天抛砖引玉,拿几个加密类函数来讲说一下VSTO较VBA开发的一些优势所在。...一般像我这种水平的人,只需要不断地百度或google,就可以拿到现成的东西直接复用,VBA毕竟是业务开发者使用的编程语言,同时又是一个官方停止更新语言,仍然使用VBA一些复杂的需求,有点吃力不讨好。...在VBA代码中调用加解密函数方法 说到重点,VBA开发者可能更多场景还要回到自己在VBA代码中想要调用其他语言开发好的函数,例如此篇的自定义函数。...-空行空列批量插入和删除 第33波-报表形式数据结构转标准数据源 第34波-提取中国身份证信息、农历日期转换相关功能 第35波-Excel版最全单位换算,从此不用到处百度找答案 第36波-新增序列函数用于生成规律性的循环重复或间隔序列

3.1K10

从零开始学量化(二):pythonmatlabrsasvba选哪个

会有一些很细节的地方,可能r里面有但是python里面没有,比如copula函数相关的,python里面只有一两个模块,而且功能非常简单,但r里面有若干个模块可以调用,而且有很详细的说明文档,所以如果做这块不想自己写的话...不过去实习下来感觉用R的非常少,学校里老师上课写论文倒是用R多一些,所以可能R更学院派一些。而且r跟其他语言交互一定没有python方便,这也使得r的性价比低了不少。 SAS ?...sas可以对一个命令逐行去运行,不需要自己加循环,可以少写一点代码。SAS有一些函数的默认跟其他软件不太一致,比如merge函数,其他软件一般是默认内连接,只保留匹配到的,但sas默认是外连接的。...SAS缺点也很明显,非常大,十多G,很占空间,启动,而且还是收费的,破解很麻烦,所以选择这个做量化回测的应该很少了,做风控数据还有指数编制的挺多。 VBA ?...当然以上的并不全面,如果你是做高频方面的,可能需要学C++,如果是做数据可视化的,多半还需要Tableau。但不管怎么样,有空的时候还是先学一点比较好,临时抱佛脚这种事情,绝对不适合零编程基础的人。

5.5K90

Active APT

尽管他们的工具能够下载和执行可能更加隐秘的任意二进制文件,但该组织的主要关注点似乎是在试图窃取数据的同时尽可能快地在目标网络中传播。我们会错过什么?...创建恶意电子邮件的 Outlook VBA 脚本 基于此恶意 VBA 代码的“发送至联系人​​列表中的所有人”行为,我们认为该模块可能导致一些组织认为他们已成为 Gamaredon 的目标,而他们只是附带损害...这是一种在组织网络中横向移动的非常有效的方式,因为文档通常在同事之间共享。此外,由于这些宏在打开文档时运行,因此在系统上持久保存是一种好方法,因为其中一些文档可能会在不同时间多次打开。...值得注意的是,有两个文本文件,一个用于 Word,一个用于 Excel,包含要插入目标文档的恶意宏的 VBA 源代码,以及负责查找和破坏现有文档的 .NET 程序集。...然而,虽然这些错误可能会降低他们工具的整体效率,但该组的快速执行和适应也有一些优势。攻击的数量和无情可能会在其目标中造成持续的恐惧状态。

7.9K00

VBA变量5年踩坑吐血精华总结

如果按照上面这个思路,是不是我们需要在每行后面都加上一个「查看答案」的按钮,然后关联每一个宏。 image.png 如果是这样的话,那么还学什么VBA,直接手工输入,它不香?...但是这样操作,有以下几点缺点: 1)程序写起来特别的长,非常容易出错; 2)代码不易维护,修改难度大; 3)VBA从内存中读取变量的时间要远低于读取单元格的时间; 因此,可以总结使用变量有以下好处(拿小本本记好...image.png 是的,这样写,确实非常容易读懂。...比如:sub和end sub表示程序的开始和结束;for表示循环;while表示循环..... (4)VBA大小写不敏感 比如:定义变量Aa = 1 和变量 aA = 10,我们人可能认为两个变量不一样...3.总结 好了,总结一下今天的VBA知识点。 (1)变量就是根据需要能够随时变化的,使用它有以下3个优点: a.程序灵活,易于维护和修改; b.代码简洁,更加优雅; c.执行速度更快,效率更高。

1.6K00

性能调优思路

资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高、未充分使用资源、程序结构不合理。 CPU消耗分析 CPU主要用于中断、内核、用户进程的任务处理,优先级为中断>内核>用户进程。...对于Java应用,造成文件IO消耗高主要是多个线程需要进行大量内容写入(例如频繁的日志写入)的动作、磁盘设备本身的处理速度、文件系统、操作的文件本身已经很大。...对于Web应用非常需要一个对应用造成暂停时间短的GC,再加上Web应用 的瓶颈都不在CPU上,在G1还不够成熟的情况下,CMS GC是不错的选择。...调优方案:将线程数降低 这种调优过后有可能会造成CPU us过高,所以合理设置线程数非常关键。...还有一些无阻塞算法的改进:MCAS、WSTM等) 尽可能少用锁:尽可能只对需要控制的资源做加锁操作(通常没有必要对整个方法加锁,尽可能让锁最小化,只对互斥及原子操作的地方加锁,加锁时尽可能以保护资源的最小化粒度为单位

89760

个人永久性免费-Excel催化剂功能第48波-拆分工作薄内工作表,堪称Excel界的单反

一个工作薄有多个相同类型的工作表,然后想通过批量操作,把每个工作表都另存为一个工作薄文件,这个批量拆分工作薄,绝大多数插件都有此功能,就如懂点VBA的高级用户也常常有点不屑于用插件来完成,自己写向行VBA...部分工作表没必要生成新的工作薄,可忽略它不处理 部分工作表是固定的工作表,需要在新生成的工作薄里都附带上,例如有一个工作表专门用于对数据结构、数据来源之类的额外信息说明或数据使用的额外说明。...最终效果 总结 玩摄影的人,不可能满足于一台傻瓜式相机或一台手机,单反相机是必备,同样地,我们要应对各式各样的场景,插件的通用性就非常有必要,此篇给大家展示了堪比单反相机搬地灵活配置,最终满足各式各样的场景...最后还是那句话,Excel最佳实践非常重要,没有它作前提,后续要做的各种无意义的事情多了去。工作薄拆分是我定义的无意义的事情之一。...-空行空列批量插入和删除 第33波-报表形式数据结构转标准数据源 第34波-提取中国身份证信息、农历日期转换相关功能 第35波-Excel版最全单位换算,从此不用到处百度找答案 第36波-新增序列函数用于生成规律性的循环重复或间隔序列

1.3K20

R语言的好与坏丨讲座中字视频丨附讲座PDF

如果你之前没接触过的话,可能会感到困惑。 另一个例子。线性回归在统计学中非常常见。你有一些数据,你想知道哪种线能够符合。那么想象一下,这里有个较复杂的情况。...优点是用起来很方便,只需要写出x加上y,然后将两部分加起来。缺点是当你拿到一个内容,这是数字?它的长度为1? 或者长度不止1那我要如何去处理呢? 一切都是按值传递的。...第二个例子比第一个运行速度25倍,所以在R语言里不好的操作代码,在C语言之类的语言中可能是好的代码,反之亦然。...R语言中,for循环结构效率非常低。如果有天你抱怨R语言的效率,其他人要提醒你的第一件事可能就是你避免用for循环了吗。但一种编程语言不鼓励for循环,确实有点奇怪,不是说你不需要它。...R语言的缺点 R语言速度。给个数字的话,可能比C++100倍,但也不一定。如果你的代码非常幼稚,也可能1000倍,也有可能2倍,这极大地取决于你要做什么。

1.7K90

Excel VBA项目实战

首先,我们对上述需求使用多维度拆解分析方法来拆解: 第一步,需要知道「基础数据」中有多少行数据,以便于我们循环读取; 第二步,循环读取「基础数据」中的每一条数据时,需要将指定内容填入「票证模板」中。...变量「i」用来循环每一行数据,变量「zhanhao」 「zhanming」 「summoney」用来储存从「基础数据」中提取的需要写入「票证模板」中需要的内容。...由于此处提取写的是电费金额,我们都知道财务的金额是需要千字符的,因此此处借用「Format」来达到财务千字符的效果。 6.复盘 看到这里,有同学可能就有疑问了:猴子老师,不是说复习之前的知识?...怎么尽出现一些生面孔? 不用说,又一个经典的天台式微笑上扬我的嘴角。 就拿最后这个千字符来说,我们压根就不会写,往回翻看,我们之前是不是分享过「还自己写代码?VBA录制宏了解下」。...因此,这里仅是向大家展示一个思路,当我们遇到一些我们从见过的内容,我们要综合运用各种储备对其有一个大概的判断,做到学习灵活应对。 推荐:人人都需要的数据分析思维 image.png

1.6K50

再见Excel!我开源了一款与Python深度集成的神器级IDE

在导出 CSV 文件时,因为行数太多或者尝试读取 JSON 文件会导致应用程序窗口没有响应。现有的工具无法提供高效的开发环境和工作流。...为了演示 Grid Studio 的功能,接下来将提供一些具体的例子。 示例:爬取网络内容 之前爬取网络内容可能需要在各种工具之间切换,现在只需要一个脚本就够了。 ?...As a heavy excel user who despises vba, this looks amazing 作为一个鄙视 VBA 的 Excel 重度用户,这也太牛了吧 I showed...除了整齐划一的 wow awesome、amazing 的赞叹,开发者们同样提出了很多改进意见,并且表示可以加入社区一起优化这个工具。.../run.sh 在浏览器中打开 http://127.0.0.1:8080 你感兴趣

2.2K30

「数据ETL」从数据民工到数据白领蜕变之旅(七)-将Excel(PowerQuery+VBA)的能力嫁接到SSIS中

使用场景 在PowerQuery的数据处理中,有相当多的一些功能使用起来非常方便,对应于企业级的SSIS,反而缺少了这些的灵活性,真正要完全使用SSIS来实现,非常繁琐。...技术原理 本篇将使用在SSIS中,使用循环容器遍历文件夹内所有Excel文件,将其文件路径获取到,再使用dotNET脚本打开用于数据转换的Excel模板文件(里面事先存储好PowerQuery的抽取清洗逻辑代码...具体的M代码如下,定义了一个参数变量filePath,用于VBA上调用方法来赋值。 因dotNET的接口上缺少此方法,只能在VBA上定义好再调用来赋值。...但这也没多大关系,毕竟大的数据量不会存在Excel文件中,PowerQuery供一些少量数据清洗,还是非常有优势的。...SSIS

4.5K20

从 JavaScript 的单线程执行说起

AWT 最初其实就是想设计成多线程的,但是使用者非常容易引起死锁和竞争,最后 Swing 还是做成了单线程的。...CPU 去比对时间(要不消耗 CPU 去比对时间是需要系统调用的,这在 JavaScript 里面是不可能实现的),并不是真正的 sleep,而是没有响应地工作。...拆分耗时逻辑 很多时候我们需要把耗时的逻辑拆分,腾出时间来给其他逻辑的执行:下面的代码源自 《Timed array processing in JavaScript》这篇文章,作者首先给出一个这样的拆分逻辑执行的框架代码...,但是我们需要给 UI 的更新渲染等等留一些时间。...这可以看做是 HTML5 尝试为单线程 JavaScript 弊端做的改进(当前问题还有不少,譬如浏览器差异)。

36220
领券