ARTICLE · 990121
从0学Excel VBA编程 · 番外篇17:AI 批量处理 Excel 数据——把表格交给 AI 分类、摘要、清洗
从0学Excel VBA编程 · 番外篇17:AI 批量处理 Excel 数据——把表格交给 AI 分类、摘要、清洗
学习目标
明白「批量处理」就是:表格每行数据 → 拼成提示词 → 发给 AI → 结果写回 会用 VBA 把一列表格内容逐个交给 AI 分类、摘要 能做一个「可配置指令」的批量清洗工具,给同事也能用
知识点精讲
番外篇16 我们实现了「问 AI 一句话」。本篇把它升级成流水线:让 AI 替你干那些又烦又重复的表格活儿——给客户留言打情感标签、把长工单压成一句话摘要、把杂乱地址标准化……
套路其实就一句话:把单元格里的文字,套进一段提示词,发给 AI,再把回答写回旁边的格子。和番外篇16 的区别只是「问题」不是人敲的,而是从表格里一行行读出来的。
本篇需要番外篇16 的三个公共函数(调用AI / 转义JSON / 读HTTP文本)。为了让你单独打开本篇也能直接跑,下面把这三个函数原样再贴一次(和番外篇16 完全相同,复制进同一个标准模块即可)。
📌 前提提醒:API Key、装 VBA-JSON、勾选 Microsoft Scripting Runtime,这几步在番外篇16 讲过了,本篇不再重复。免费额度有限,数据量大时请分批、别太密,AI 偶尔也会答错,关键结果记得人工复核。
【SVG 示意图】
公共函数区(与番外篇16 相同,复制进模块):
' 把文本里的特殊字符转义,避免拼 JSON 时出错Function 转义JSON(t As String) As String t = Replace(t, "\", "\\") t = Replace(t, """", "\""") t = Replace(t, vbCrLf, "\n") t = Replace(t, vbCr, "\n") t = Replace(t, vbLf, "\n") 转义JSON = tEnd Function' 把 XMLHTTP 返回的字节流按 UTF-8 解码成中文文本Function 读HTTP文本(http As Object) As String Dim stream As Object Set stream = CreateObject("ADODB.Stream") stream.Type = 1 stream.Open stream.Write http.responseBody stream.Position = 0 stream.Type = 2 stream.Charset = "UTF-8" stream.Position = 0 读HTTP文本 = stream.ReadText stream.CloseEnd Function' 核心:问 AI 一句话,返回它的回答文本Function 调用AI(问题 As String) As String Dim http As Object, url As String, apiKey As String, body As String Dim resp As String, dic As Object apiKey = "换成你的APIKey" ' ← 改成你自己的密钥 url = "https://api.deepseek.com/v1/chat/completions" body = "{""model"":""deepseek-chat""," & _ """messages"":[{""role"":""user"",""content"":""" & 转义JSON(问题) & """}]}" Set http = CreateObject("MSXML2.XMLHTTP") http.Open "POST", url, False http.setRequestHeader "Content-Type", "application/json" http.setRequestHeader "Authorization", "Bearer " & apiKey http.send body resp = 读HTTP文本(http) Set dic = JsonConverter.ParseJson(resp) 调用AI = dic("choices")(1)("message")("content")End Function3 个实战案例
案例 1(简单):客户反馈一键情感分类
功能说明:A 列是客户留言,逐行发给 AI 判断情感,结果写进 B 列(好评 / 中性 / 差评)。
Sub 客户反馈分类() Dim r As Long, 提示 As String For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row On Error Resume Next 提示 = "只回答'好评'、'中性'或'差评'中的一个词,判断这句话的情感:" & Cells(r, "A").Value Cells(r, "B").Value = 调用AI(提示) On Error GoTo 0 Next r MsgBox "分类完成,结果在 B 列", vbInformationEnd Sub操作步骤
在 A2 起填入客户留言,例如「物流太快了,满意」「等了一周才到,无语」 把上面公共函数 + 本过程放进同一模块,密钥改成你自己的 运行 客户反馈分类,稍等片刻,B 列出现每句的情感标签
案例 2(中等):工单自动摘要
功能说明:A 列标题、B 列描述,把两列拼成一段让 AI 总结,一句话摘要写进 C 列。比人工看长篇描述快得多。
Sub 工单摘要() Dim r As Long, 提示 As String For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row On Error Resume Next 提示 = "用一句话总结这个工单。标题:" & Cells(r, "A").Value & ";描述:" & Cells(r, "B").Value Cells(r, "C").Value = 调用AI(提示) On Error GoTo 0 Next r MsgBox "摘要已写在 C 列", vbInformationEnd Sub操作步骤
A 列填工单标题、B 列填详细描述(从第 2 行起) 运行 工单摘要C 列逐行出现精简摘要,可直接贴进日报或派单系统
案例 3(实用):可配置指令的批量清洗看板
功能说明:做一个给同事用的小工具——B1 写「处理指令」(想让 AI 干啥),A 列放待处理文本,点按钮,AI 逐行套用指令处理,结果写 B 列。换指令就能换活儿,不用改代码。
Sub 智能批量处理() Dim r As Long, 指令 As String, 提示 As String 指令 = Range("B1").Value If 指令 = "" Then MsgBox "先在 B1 写处理指令,例如:判断情感只回好评/中性/差评", vbExclamation: Exit Sub For r = 2 To Cells(Rows.Count, "A").End(xlUp).Row On Error Resume Next 提示 = 指令 & ":" & Cells(r, "A").Value Cells(r, "B").Value = 调用AI(提示) On Error GoTo 0 Next r MsgBox "处理完成,结果在 B 列", vbInformationEnd Sub操作步骤
在 B1 输入指令,例如「把这句话里的人名、电话、地址提取出来,用逗号隔开」 A2 起放入待处理文本(如「张先生13800001111住北京海淀」) 插入一个形状,右键「指定宏」→ 选 智能批量处理点这个形状,B 列逐行出现 AI 提取的结果 想换活儿?只改 B1 指令即可,例如改成「把这段话翻译成英文」
本篇小结
本质:表格文字 → 拼提示词 → 调 调用AI→ 写回,循环而已三种活儿:分类(案例1)、摘要(案例2)、可配置清洗(案例3) 越用越省事:案例3 的「指令放 B1」思路,让非技术的同事也能换着法儿用 别忘了:免费额度分批跑、关键结果人工复核(AI 不是百分百准)
下一篇预告
下一篇可做 番外篇18:AI 生成报告 / 自动导出邮件(把本篇批量处理完的结果,自动汇总成一段周报并发邮件),把「调用 AI → 批量处理 → 导出发送」这条智能办公链彻底打通。如果你更想收尾,也可以做《VBA 自动化工具箱》总目录。告诉我选哪个方向即可。