Excel VBA 如何快速学习?
说真的,我是会写VBA,但我懒得写哈哈。以及,AI写的报错处理更全。
用AI写VBA,对新手能够快速入门和做出来,对老手能够节约大量时间。
嗨,大家好,我是真的很讨厌重复性工作的小邱。
不知道大家有没有做过工程会计,在工程办理结算的时候,工程会计需要对拟结算的工程进行材料审核。
具体就是算一下,这个项目总共用了哪些材料、不含税金额是多少、含税金额是多少,这里面用的材料哪些是发包方的,哪些是承包方的,要给承包方多少钱。
每到月底的时候承包方(施工单位)都会抱着一大摞文件来找我们审核,头都给我整大了!
今天给教大家用AI生成VBA代码,用VBA宏进行完成批量审核。如果只想看干货“如何使用AI让AI听懂人话”的同学,可以直接拉到本文最下面的总结部分。
那么,先来看今天的案例:
上图是某项目的材料领用表,A列是领用的材料编号,B列是材料名称,C列是材料的不含增值税的材料金额。
再来看看要做什么:
- 先打开项目材料表→定位到C列的最后一个单元格→对材料的不含税金额求和(最后一个单元格之上的单元格求和)①
- 在求和后的下一单元格,对刚刚求和后金额*1.13(还原成含税金额)②
- 材料名称(B列)里,含有甲方两字的是甲方提供的材料,需要从总的工程成本里扣除(因为是自己的资产啦,就不是项目成本啦)。所以第三个要输入的数字扣除甲供材的含税材料金额,即②-甲方材料*1.13。
- 最后给录入的单元格加框线。
其实就这样手工录入一两个还好,主要是经常二三十个的资料堆在一起审核……
实在是太多了。
今天教大家用AI写Excel宏(VBA)做一个批量处理的小程序。宏代码都是AI写的哦,零基础的朋友也可以跟上!
用AI生成VBA宏代码
首先,新建一个Excel工作簿,命名一下,什么“测试”啊,“批量处理”,“用AI写宏”都可以。
然后,打开任意一个能访问的AI。这里我用的是文心一言,文心一言不用魔法上网,很适合作为基础款AI。
向AI描述我们要用VBA实现的操作:
请帮我写一个VBA程序,要求实现下列效果:
- 给用户一个浏览并选择文件夹的窗口。
- 遍历(挨个处理)用户选择的文件夹里的Excel文件。
- 在每一个Excel文件里,定位C列的最后一个非空单元格。在这个非空单元格的下一单元格,录入在其之上的所有单元格求和的值,并保留两位小数。同时,给这个单元格加框线。
- 在刚刚录入的单元格的下一单元格,录入上一单元格*1.13的结果并四舍五入保留两位小数。同时,给这个单元格加框线。
- 新建一个名为“甲方材料金额”的变量。
- 在B列,查找包含“甲方”的单元格行号,如果没有“甲方”,甲方材料金额=0;如果有一个或以上的“甲方”,分别返回B列“甲方”单元格所在行,对那些所在行的求和所在C列的金额求和,并四舍五入赋值给变量“甲方材料金额”。
- 在原本C列非空单元格的下下下单元格中,计算其上一单元格减去“甲方材料金额”*1.13的值,四舍五入后录入。同时,给这个单元格加框线。
- 遍历(挨个处理)完所有文件后,给用户一个弹窗,弹窗里的内容是“已处理完毕!”
大概等上十秒钟,文心一言就会给我们显示一长串VBA代码。
回到刚刚新建的Excel工作簿里,按Alt+F11,打开VBA,新建模块后,粘贴AI生成的代码。最后点击运行。
来看看刚刚AI生成的代码效果怎么样,我没有倍速哦!用程序批量处理文件就是很快:
感觉还行,整个文件夹里要处理的文件都做完了,但似乎最后一个金额不太对。
如果有问题的话,直接把问题抛给AI,让AI重新生成下。
感觉文心一言这个模型(用文心大模型3.5!4.0太不稳定了,4.0在乱答)还是够用了,生成的代码也基本上能直接运行,不需要怎么调试,出错率还是挺低的了。
代码修改之后我又运行了下,都是正确的。(下图的人工没有做四舍五入啦)
总结:如何让AI听懂需求
其实要让AI听懂需求,最重要的是弄明白自己的需求。
在今天的案例里,我把我的每个要求都清楚地列出,即,明确告诉AI在什么样的情况下,在哪一个地方(单元格)执行什么样的操作,最后录入或者输出什么数据/数值。
让AI听懂需求,发送给AI的对话模板可以像我这样:
- 指明要AI做的事,例如:帮我写一个Excel VBA宏代码
- 说明要求,这个要求越细越好,不要让AI拥有太多主观能动性:这个宏代码需要实现以下几点功能:①在A情况下执行a操作,最后录入aa到A1单元格
- 附加要求,让AI根据自身的情况回复,例如:请注意,我完全不会VBA代码,请尽可能详细的告诉我每一个步骤,包括在哪写VBA代码、怎么打开VBA代码界面、点击哪里开始运行代码。
如果遇到AI乱答的情况,也不要慌,再重复描述和变换关键词多和AI对话几次就好了。遇到代码报错,也可以直接把报错提示发给AI,让AI接着修改。
今天关于如何用AI生成代码的介绍就到这里啦,大家还有什么感兴趣的话题可以后台给我们留言哦~