夜雨聆风学习资料网

ARTICLE · 1210222

DeepSeek+ VBA+EXCEL:3个财务业务真实案例分享

DeepSeek+ VBA+EXCEL:3个财务业务真实案例分享

上周发了一篇DeepSeek写Excel函数和VBA的对比,后台收到最多的一条留言是:“道理懂了,但财务到底能用VBA做什么?”

这个问题问到了点上。函数和VBA的边界,在财务场景里其实非常具体:凡是需要“遍历、判断、写入、格式化”的动作,函数只能看着,VBA能动手。下面三个场景,是我实际用DeepSeek生成VBA代码跑通的,代码没有一行是我手写的,但每一个都踩过坑。

一、对账业务,两列数据一对一核对

先说一个财务人员每月都在做的事:对账。

公司明细账和银行明细账各一千多行,借方对贷方。第一反应是用VLOOKUP,但试过就知道不行——表格里有大量重复金额,VLOOKUP只能返回第一个匹配,后面的重复项根本核不出来。

DeepSeek提示词:

1.编写一段VBA代码,运行后分别选取两列数据,进行一对一核对。

2.规则:逐个从列2中查找列1相同的数,找到相同则两个数同时填充相同的随机色;每个数只能成功核对一次,已填色的不能再次使用。

DeepSeek给出的代码核心用了字典对象(Scripting.Dictionary)来记录已匹配的位置,配合Application.InputBox让用户手动框选两个区域,然后逐行遍历、逐值比对、对匹配成功的单元格填充颜色。运行后两个区域被选中的数字会成对高亮,重复金额也能一一对应,不会被“吞掉”。

这个场景的关键不在“算”,而在“标记” 。函数也能判断两列是否相等,但它没法给匹配成功的单元格上色——这是VBA的领域。

操作路径:Alt+F11 → 插入模块 → 粘贴代码 → 另存为.xlsm → 运行,全程不到一分钟。把代码拿过来在本地跑就行,文件不出电脑,数据绝对安全。

二、月报自动生成,把Word和Excel串起来

财务月报的痛苦不在于算数,在于数据在一个文件里,模板在另一个文件里,每个月手动复制粘贴。

DeepSeek提示词:

1.一个Word月报模板,里面有 {{月份}}、{{销售额}}、{{增长率}} 几个占位符;数据存在一个Excel的Sheet1里,A2:D2就是当月四个数;还有一份Word的情况通报需要整篇插入模板。

2.请用VBA代码实现以上需求。

手动操作是:打开Excel找行 → 复制四个数 → 打开Word逐个粘贴 → 再打开另一份Word复制全文 → 贴进去 → 另存。

把提示词发给DeepSeek后,它给出具体方案:

把DeepSeek生成的代码放在Excel 工作簿里运行(因为数据源在 Excel),整个流程是:读 A2:D2 → 打开 Word 模板 → 替换占位符(含页眉页脚)→ 末尾插入通报 → 按月份命名另存。

放在同一个文件夹下,代码里用ThisWorkbook.Path 自动定位:

月报模板.docx —— 含 {{月份}}、{{销售额}}、{{增长率}} 三个占位符

情况通报.docx —— 要整篇插入的那份

预算月报.xlsm —— 放代码的工作簿,Sheet1 的 A2:D2 是数据

A2:D2 的约定:A2=月份,B2=销售额,C2=增长率,D2=部门(或备注)。占位符只有三个,D2 先读出来备用,需要的话模板里加个 {{部门}} 即可。

这个场景函数完全做不到。 函数不能打开另一个Word文件,不能替换占位符,不能另存。VBA在这里的价值不是“计算”,是编排——把Excel、Word、文件系统串成一条流水线。你只需要告诉DeepSeek文件在哪里、占位符长什么样、数据在哪个单元格,它就能把这段流水线代码化。

三、预算执行跟踪,差异高亮 + 异常标记

预算职场人的日常:一张表左边是预算数,右边是实际数,中间是差异额和差异率。每月初新数据进来,要自动把差异率超过阈值的行标红,把“预算执行率低于60%”的项目标黄,同时在旁边写一句差异说明。

用函数可以做差异计算,但条件格式的规则是固定的,而财务的判断逻辑是变化的:这个月差旅费超预算20%要标红,下个月可能变成“超10%且金额大于5000”才标红。与其反复改条件格式规则,不如让VBA一次性把判断和着色都做完。

我给DeepSeek的提示词没有要求它写完整代码,而是先让它生成核心逻辑片段:

写一段VBA,遍历“预算跟踪”工作表第2行到最后一个非空行。F列是差异率,如果F值 > 0.2 则整行浅红填充;如果F值 < -0.2 则整行浅黄填充;同时在H列写入文本“超支”或“节约”,如果差异率绝对值在0.05以内则写“持平”。差异率是 (实际-预算)/预算。

DeepSeek生成的代码用For i = 2 To lastRow 遍历,If...ElseIf 判断差异率区间,Interior.Color 填充颜色,Cells(i, 8).Value 写入说明文字。逻辑并不复杂,但手工做一百行和VBA做一万行没有区别。更关键的是,下次阈值变了,只需要改提示词里的那几个数字,重新生成一次代码就行,不需要去条件格式管理器里逐条编辑规则。

三个场景跑下来,几条真切的感受

1.DeepSeek写VBA的强项在“流程”,不在“算法”。 对账的字典匹配、月报的跨程序调用、预算的遍历着色,本质上都是流程自动化。它不会帮你发明一个新的财务模型,但能把“打开A、找到B、复制到C、标记D”这一串动作写成可重复执行的脚本。

2.提示词里必须交代“表结构”。 上面三个场景能一次跑通,前提是我在提示词里说清楚了:哪一列是日期、哪一列是金额、占位符长什么样、工作表叫什么名字。DeepSeek不需要你懂VBA语法,但它需要你像给同事交接工作一样,把数据的“地形”讲明白。只说“帮我做个对账”,它给出来的代码大概率对不上你的列。

3..xlsm是绕不过去的。 所有含VBA的文件必须另存为启用宏的工作簿,第一次打开还要点“启用内容”。这不是DeepSeek的问题,是Excel的安全机制。如果公司电脑的宏被IT策略锁死了,VBA路线在那一台机器上就是走不通的,这时候只能回到函数方案。

4.AI生成的代码,第一遍跑之前先在副本上试。 我遇到过一次:DeepSeek写的月报代码里文件路径是硬编码的 E:\月度销售额.xlsx,直接跑会报错。这不是它写错了,是我没告诉它路径要参数化。把报错信息和代码一起发回给DeepSeek,它通常能在下一轮修正——但这个“试→报错→修”的循环,要求你在副本上做,不要在唯一的源文件上做。

结语

财务场景选择工具判断标准很简单:如果这件事做完之后,你还需要“用眼睛看”或者“用手点”来收尾,那它就是VBA的活。核对完了要标颜色,月报生成完了要另存,差异算完了要写说明——这些“收尾动作”才是VBA真正吃掉的时间。而DeepSeek做的事情,是把繁琐过程这个门槛从财务人面前拿走了。你只需要说清楚数据和规则,它来写那几十行你本来永远不会去学的For...Next。

语言到不了的地方,DeepSeek可以。持续分享数据安全下AI办公实战,欢迎关注,干货不错过。

相关学习资料