掘金 人工智能 06月11日 10:13
3个实操案例,学会用DeepSeek做VBA开发实现Excel自动化
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了如何利用VBA(Visual Basic for Applications)结合AI技术,实现Excel的自动化处理。文章首先介绍了VBA的基础知识,包括其在Excel中的应用和优势,特别是在AI时代,VBA如何通过AI辅助快速编写脚本,提高工作效率。随后,文章通过具体案例,如一键生成报告表头和自动生成工作表目录,展示了VBA在自动化Excel任务中的实用性。最后,文章探讨了更复杂的数据整合与查询场景,展示了VBA在处理多数据源时的强大功能,为用户提供了全面的Excel自动化解决方案。

💡VBA作为内嵌于微软Office的编程语言,能够直接操作Excel对象,实现精细化控制,尤其在Excel内部的重复性任务自动化方面,VBA具有显著优势,可以通过AI辅助快速编写脚本。

⌨️通过AI生成的VBA代码,可以实现一键生成报告表头和自动生成带超链接的工作表目录等功能,简化了重复性操作,提高了工作效率。用户只需明确需求,构建AI指令,即可生成相应的VBA代码。

📊VBA在处理复杂数据整合与查询方面展现出强大能力。通过结合AI,可以高效地从多个Excel文件整合数据,将事实表数据与维度表数据关联,生成包含更丰富信息的新表,简化了数据处理流程。

Excel一定是每一个办公人绕不过去的坎——不论现在的AI有多牛逼、产品多有逼格,最终落到实操环节都离不开Excel。但Excel的操作本身就比较繁琐,更不用说大量重复性操作的场景,就令人很烦。

此时,我们可以借助VBA的工具,通过AI写代码的方式完成Excel自动化处理

1. VBA是什么?

VBA (Visual Basic for Applications) 是一种内嵌于微软Office应用程序(如Excel、Word、Access等)的编程语言。在Excel中,VBA允许用户编写脚本(称为“宏”)来自动执行任务、自定义功能、处理数据、创建用户界面等,从而扩展Excel的原生功能。

2. AI时代,为什么还要关注VBA?

想运行代码的话,就一定要有一个「编译器」,例如Python,可以用cursor

而VBA直接打开Excel就能用了,很方便。

也就是说,VBA 与Excel的深度集成:能够直接、便捷地操控Excel的每一个对象(工作簿、工作表、单元格、图表等) ,实现精细化的控制。

尤其是现在AI时代,对于Excel内部的重复性任务,通过VBA(尤其是AI辅助下)可以快速编写脚本实现自动化,投入产出比较高。

3. VBA、Python、SQL:在Excel数据处理中的定位与选择

在数据处理和自动化领域,除了VBA,Python和SQL也是常用的工具。怎么知道自己该用哪个工具?

在实际工作中,这三个工具都是要搭配使用的:

例如,你可以用SQL从数据库提取原始数据,用Python进行复杂的清洗和分析,最后用VBA在Excel中生成格式化的报告并添加交互功能。

4. 用DeepSeek开发VBA

A. 打开Excel并显示“开发工具”选项卡

若Excel功能区未显示“开发工具”选项卡,请按以下步骤操作:

    点击“文件”菜单,选择“选项”。

    在“Excel选项”对话框中,选择左侧的“自定义功能区”。

    在右侧“主选项卡”列表中,确保勾选“开发工具”。

    点击“确定”。

B. 进入VBA编辑器 (VBE)

打开VBE(Visual Basic Editor)的方式:通过“开发工具”选项卡:点击功能区中的“Visual Basic”按钮。

c. VBE界面主要包含以下窗口:

其实知道怎么操作就行了,界面的知道、不知道也没关系。

完成以上准备工作后,便可以开始借助AI编写VBA代码了。

实战操作

案例1:一键生成标准化的报告表头

问题背景:

在制作周报、月报等周期性报告时,经常需要重复设置相同的表头信息,如公司名称、报告标题、制表日期等,并统一其格式。手动操作不仅繁琐,也容易遗漏或格式不一。

操作步骤:

    明确需求,构建AI指令 (Prompt):
    假设需求如下:在活动工作表的A1单元格填入“示例股份有限公司”,A2单元格填入“月度运营数据报告”,A3单元格填入当前日期。A1和A2单元格的文本要求加粗、字号14,并且单元格区域A1:C1和A2:C2分别进行合并居中。

参考提示词:

请编写一段Excel VBA代码,在当前活动工作表中执行以下操作:     1. 在单元格A1输入文本“示例股份有限公司”。     2. 在单元格A2输入文本“月度运营数据报告”。     3. 在单元格A3输入今天的日期,格式为“YYYY-MM-DD”。     4. 将单元格A1和A2中的文本设置为粗体,字号调整为14。     5. 合并单元格区域A1:C1,并将其内容水平居中、垂直居中。     6. 合并单元格区域A2:C2,并将其内容水平居中、垂直居中。     7. 所有操作完成后,弹窗提示“报告表头已生成完毕”。

2. 利用DeepSeek生成VBA代码:

Sub GenerateReportHeader()    Dim ws As Worksheet    ' 获取当前活动工作表    Set ws = ActiveSheet    With ws        ' 填写表头内容        .Range("A1").Value = "示例股份有限公司"        .Range("A2").Value = "月度运营数据报告"        .Range("A3").Value = Date        .Range("A3").NumberFormat = "YYYY-MM-DD" ' 设置日期格式        ' 设置A1单元格格式并合并        With .Range("A1")            .Font.Bold = True            .Font.Size = 14        End With        With .Range("A1:C1")            .Merge            .HorizontalAlignment = xlCenter            .VerticalAlignment = xlCenter        End With        ' 设置A2单元格格式并合并        With .Range("A2")            .Font.Bold = True            .Font.Size = 14        End With        With .Range("A2:C2")            .Merge            .HorizontalAlignment = xlCenter            .VerticalAlignment = xlCenter        End With    End With    MsgBox "报告表头已生成完毕", vbInformationEnd Sub

3. 在Excel中执行VBA代码

首先,新建模块,有两种方式:

方式一:Excel-开发工具-宏,在弹窗中随便起个名字,点「创建」

方式二:点进去编辑界面-插入-模块

然后在下图的模块中,把原先的内容清空,把AI给的代码黏贴进去

最后在运行-运行子过程,即可!!

    运行效果:
    执行宏后,当前活动工作表的A1:C3区域将按预设要求自动生成表头内容和格式。

代码说明:

觉得它太简单的话,也可以继续用Deepseek帮我们设计一个复杂的版本:

替换原来的模块,或者重新新建一个:

是不是有那味了?

案例2:自动生成带超链接的工作表目录

问题背景:

当一个Excel工作簿中包含大量工作表时(例如,各个月份的销售数据、不同部门的预算表等),手动查找和切换工作表会变得效率低下。

例如我现在一个Excel有多个Sheet,是每个月的销售表。

目标:

利用VBA代码自动创建一个名为“目录”的工作表。该工作表将列出工作簿中所有其他工作表的名称,并为每个名称创建超链接,方便快速跳转。同时,在每个数据工作表特定位置(如E1单元格)添加一个“返回目录”的超链接。

操作步骤:

    明确需求,构建AI指令:

       请编写Excel VBA代码实现以下功能: 1. 检查当前工作簿中是否存在名为“目录”的工作表。    a. 如果不存在,则在所有工作表的末尾新建一个名为“目录”的工作表。    b. 如果已存在,则清空该“目录”工作表的所有内容。 2. 在“目录”工作表的A1单元格写入“序号”,B1单元格写入“工作表名称”,并将这两个单元格字体加粗。 3. 从第二行开始,在“目录”工作表中生成所有其他工作表的列表:    a. A列为序号,从1开始递增。    b. B列为对应工作表的名称。    c. B列的工作表名称应设置为超链接,点击后跳转到对应工作表的A1单元格。链接文本颜色设置为蓝色。 4. 遍历工作簿中所有非“目录”的工作表,在每个工作表的E1单元格创建文本为“返回目录”的超链接,点击后跳转到“目录”工作表的A1单元格。此链接文本颜色也设置为蓝色。如果E1单元格已有超链接,先将其删除。 5. 代码执行开始前关闭屏幕更新,结束后恢复屏幕更新,并显示“目录生成/更新完毕!”的提示信息。 6. 自动调整“目录”工作表A列和B列的列宽以适应内容。

    用DeepSeek v3生成vba代码:

Sub CreateOrUpdateTableOfContents()    Dim mainWorkbook As Workbook    Dim tocSheet As Worksheet    Dim ws As Worksheet    Dim rowIndex As Long    Dim sheetCounter As Long    Application.ScreenUpdating = False    Set mainWorkbook = ThisWorkbook    ' 步骤1: 创建或引用“目录”工作表    On Error Resume Next ' 临时忽略错误,以便检查工作表是否存在    Set tocSheet = mainWorkbook.Worksheets("目录")    On Error GoTo 0 ' 恢复正常错误处理    If tocSheet Is Nothing Then        Set tocSheet = mainWorkbook.Worksheets.Add(After:=mainWorkbook.Sheets(mainWorkbook.Sheets.Count))        tocSheet.Name = "目录"    Else        tocSheet.Cells.ClearContents ' 如果存在则清空    End If    ' 步骤2: 设置“目录”工作表表头    With tocSheet        .Range("A1").Value = "序号"        .Range("B1").Value = "工作表名称"        .Range("A1:B1").Font.Bold = True    End With    rowIndex = 2 ' 目录条目从第二行开始    sheetCounter = 0    ' 步骤3: 生成目录列表及超链接    For Each ws In mainWorkbook.Worksheets        If ws.Name <> tocSheet.Name Then ' 排除“目录”工作表本身            sheetCounter = sheetCounter + 1            With tocSheet                .Cells(rowIndex, "A").Value = sheetCounter ' 序号                .Cells(rowIndex, "B").Value = ws.Name      ' 工作表名称                ' 创建到对应工作表的超链接                .Hyperlinks.Add Anchor:=.Cells(rowIndex, "B"), _                                Address:="", _                                SubAddress:="'" & ws.Name & "'!A1", _                                TextToDisplay:=ws.Name                .Cells(rowIndex, "B").Font.Color = vbBlue            End With            rowIndex = rowIndex + 1        End If    Next ws    ' 步骤4: 在其他工作表添加“返回目录”链接    For Each ws In mainWorkbook.Worksheets        If ws.Name <> tocSheet.Name Then            On Error Resume Next ' 忽略可能没有超链接的错误            ws.Range("E1").Hyperlinks.Delete ' 先删除E1可能存在的旧链接            On Error GoTo 0            ws.Hyperlinks.Add Anchor:=ws.Range("E1"), _                              Address:="", _                              SubAddress:="'" & tocSheet.Name & "'!A1", _                              TextToDisplay:="返回目录"            ws.Range("E1").Font.Color = vbBlue        End If    Next ws    ' 步骤6: 自动调整列宽    tocSheet.Columns("A:B").AutoFit    Application.ScreenUpdating = True    ' 步骤5: 完成提示    MsgBox "目录生成/更新完毕!", vbInformationEnd Sub

按案例1的一样操作,直接运行,就能看到目录了。

代码说明:

通过这两个入门案例,可以看出AI在辅助生成VBA代码方面的潜力,使得用户能更专注于需求本身,而非繁琐的语法细节。

案例3:进阶 —— 复杂数据整合与查询

在处理来自不同数据源或结构复杂的数据时,往往需要进行数据整合与转换。本案例将利用提供的多份CSV数据文件,模拟一个常见的数据处理场景:将事实表数据与维度表数据关联,生成一个包含更丰富信息的新表。此操作若手动使用Excel公式(如VLOOKUP)处理大量数据,效率较低且易出错。

假设我现在有多张表格,如下图,分别是区域表、用户表、产品表、订单表。

其中订单表是这样的:

可以看到,用户和产品都是没名字的,我的需求是让订单表从用户表、产品表上把对应的名字匹配上。

这也是很经典的需求:多表匹配

请编写一段Excel VBA代码,用于从指定文件夹中的多个Excel文件 (.xlsx) 整合数据到当前活动工作簿的新工作表中。具体需求如下:选择源文件夹:程序开始时,弹出一个对话框让用户选择包含源Excel文件的文件夹。如果用户未选择文件夹,则中止程序并提示。定义源文件名:事实数据文件名: "Model-FactSales.xlsx"产品维度数据文件名: "Model-DimProduct.xlsx"客户维度数据文件名: "Model-DimCustomer.xlsx"城市维度数据文件名: "Model-DimCity.xlsx"数据关联与填充:

AI生成的VBA代码还是很全面的:包含了文件夹选择、外部文件读取、字典应用和错误处理等要素:

Option Explicit ' 强制声明所有变量Sub ConsolidateDataFromExternalFiles_V3()    Dim startTime As Double    startTime = Timer    Application.ScreenUpdating = False    Application.EnableEvents = False    Application.Calculation = xlCalculationManual    Dim folderPath As String    Dim wbSource As Workbook, wbDim As Workbook    Dim wsSource As Worksheet, wsDim As Worksheet    Dim wsConsolidated As Worksheet    Dim dictProducts As Object, dictCustomers As Object, dictCities As Object        Dim factSalesFileName As String, productDimFileName As String, customerDimFileName As String, cityDimFileName As String        Dim arrFactSalesData As Variant ' 用于存储FactSales的原始数据    Dim arrOutputData As Variant    ' 用于构建最终的输出数据        Dim i As Long, j As Long    Dim lastRowFact As Long, lastColFact As Long    Dim lastRowOutput As Long, lastColOutput As Long        ' --- 用于存储在FactSales表中关键Key列的列号 ---    Dim spuColFact As Long    Dim customerIdColFact As Long    Dim cityIdColFact As Long        ' --- 用于存储在Output数组中新增Name列的列号 ---    Dim productNameColOutput As Long    Dim customerNameColOutput As Long    Dim cityNameColOutput As Long        Dim tempKey As Variant    ' --- 1. 选择源文件夹 ---    With Application.FileDialog(msoFileDialogFolderPicker)        .Title = "请选择包含源Excel文件的文件夹"        .AllowMultiSelect = False        If .Show <> -1 Then            MsgBox "未选择文件夹,操作中止。", vbExclamation            GoTo CleanUpAndExit        End If        folderPath = .SelectedItems(1)        If Right(folderPath, 1) <> Application.PathSeparator Then            folderPath = folderPath & Application.PathSeparator        End If    End With    ' --- 2. 定义源文件名 ---    factSalesFileName = "Model-FactSales.xlsx"    productDimFileName = "Model-DimProduct.xlsx"    customerDimFileName = "Model-DimCustomer.xlsx"    cityDimFileName = "Model-DimCity.xlsx"    ' --- 3.1 创建或重置 "ConsolidatedSales" 工作表 ---    On Error Resume Next    Application.DisplayAlerts = False    ThisWorkbook.Sheets("ConsolidatedSales").Delete    Application.DisplayAlerts = True    On Error GoTo 0        Set wsConsolidated = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))    wsConsolidated.Name = "ConsolidatedSales"    ' --- 读取 "Model-FactSales.xlsx" 数据到数组 ---    If Len(Dir(folderPath & factSalesFileName)) = 0 Then        MsgBox "文件 " & factSalesFileName & " 在指定文件夹中未找到!操作中止。", vbCritical        GoTo CleanUpAndExit    End If        On Error GoTo FileOpenErrorFactSales    Set wbSource = Workbooks.Open(folderPath & factSalesFileName, ReadOnly:=True, UpdateLinks:=0)    Set wsSource = wbSource.Sheets(1)    arrFactSalesData = wsSource.UsedRange.Value ' 将整个UsedRange读入数组    wbSource.Close SaveChanges:=False    Set wsSource = Nothing    Set wbSource = Nothing    On Error GoTo 0        If Not IsArray(arrFactSalesData) Then        MsgBox "无法从 " & factSalesFileName & " 读取数据。", vbCritical        GoTo CleanUpAndExit    End If    If UBound(arrFactSalesData, 1) < 1 Then ' 至少要有表头行        MsgBox factSalesFileName & " 为空或格式不正确。", vbCritical        GoTo CleanUpAndExit    End If    ' --- 确定FactSales中关键Key列的列号 (基于表头名称) ---    For j = LBound(arrFactSalesData, 2) To UBound(arrFactSalesData, 2)        Select Case Trim(CStr(arrFactSalesData(1, j))) ' 表头在数组的第一行            Case "SPU": spuColFact = j            Case "客户ID": customerIdColFact = j            Case "区域ID": cityIdColFact = j        End Select    Next j    If spuColFact = 0 Or customerIdColFact = 0 Or cityIdColFact = 0 Then        MsgBox "错误:" & factSalesFileName & " 中未能找到一个或多个关键表头 (SPU, 客户ID, 区域ID)。请检查表头是否正确。", vbCritical        GoTo CleanUpAndExit    End If    ' --- 4. 加载维度表数据到字典 ---    Set dictProducts = CreateObject("Scripting.Dictionary")    Set dictCustomers = CreateObject("Scripting.Dictionary")    Set dictCities = CreateObject("Scripting.Dictionary")    ' 假设维度文件中的Key在第1列,Name在第2列。如果不是,请修改LoadDictionary_V3的调用参数。    LoadDictionary_V3 dictProducts, folderPath, productDimFileName, 1, 2 ' keyCol=1 (SPU), valCol=2 (ProductName)    LoadDictionary_V3 dictCustomers, folderPath, customerDimFileName, 1, 2 ' keyCol=1 (客户ID), valCol=2 (CustomerName)    LoadDictionary_V3 dictCities, folderPath, cityDimFileName, 1, 2       ' keyCol=1 (区域ID), valCol=2 (CityName)        ' --- 5. 准备输出数组并填充数据 ---    lastRowFact = UBound(arrFactSalesData, 1)    lastColFact = UBound(arrFactSalesData, 2)        lastColOutput = lastColFact + 3 ' 新增3列    productNameColOutput = lastColFact + 1    customerNameColOutput = lastColFact + 2    cityNameColOutput = lastColFact + 3        ReDim arrOutputData(LBound(arrFactSalesData, 1) To lastRowFact, LBound(arrFactSalesData, 2) To lastColOutput)    ' 填充表头行到输出数组    For j = LBound(arrFactSalesData, 2) To lastColFact        arrOutputData(LBound(arrFactSalesData, 1), j) = arrFactSalesData(LBound(arrFactSalesData, 1), j)    Next j    arrOutputData(LBound(arrFactSalesData, 1), productNameColOutput) = "ProductName" ' 或中文 "产品名称"    arrOutputData(LBound(arrFactSalesData, 1), customerNameColOutput) = "CustomerName" ' 或中文 "客户名称"    arrOutputData(LBound(arrFactSalesData, 1), cityNameColOutput) = "CityName"     ' 或中文 "区域名称"    ' 填充数据行    For i = LBound(arrFactSalesData, 1) + 1 To lastRowFact ' 从第二行开始 (数据行)        ' 复制原始数据        For j = LBound(arrFactSalesData, 2) To lastColFact            arrOutputData(i, j) = arrFactSalesData(i, j)        Next j                ' 查找并填充ProductName        tempKey = arrFactSalesData(i, spuColFact)        If Not IsEmpty(tempKey) And dictProducts.Exists(CStr(tempKey)) Then            arrOutputData(i, productNameColOutput) = dictProducts(CStr(tempKey))        Else            arrOutputData(i, productNameColOutput) = "N/A"        End If                ' 查找并填充CustomerName        tempKey = arrFactSalesData(i, customerIdColFact)        If Not IsEmpty(tempKey) And dictCustomers.Exists(CStr(tempKey)) Then            arrOutputData(i, customerNameColOutput) = dictCustomers(CStr(tempKey))        Else            arrOutputData(i, customerNameColOutput) = "N/A"        End If                ' 查找并填充CityName        tempKey = arrFactSalesData(i, cityIdColFact)        If Not IsEmpty(tempKey) And dictCities.Exists(CStr(tempKey)) Then            arrOutputData(i, cityNameColOutput) = dictCities(CStr(tempKey))        Else            arrOutputData(i, cityNameColOutput) = "N/A"        End If    Next i        ' --- 6. 将输出数组写入 "ConsolidatedSales" 工作表 ---    wsConsolidated.Range("A1").Resize(UBound(arrOutputData, 1), UBound(arrOutputData, 2)).Value = arrOutputData    wsConsolidated.UsedRange.Columns.AutoFitCleanUpAndExit:    Application.Calculation = xlCalculationAutomatic    Application.EnableEvents = True    Application.ScreenUpdating = True    Set wbSource = Nothing    Set wsSource = Nothing    Set wsDim = Nothing    Set wsConsolidated = Nothing    Set dictProducts = Nothing    Set dictCustomers = Nothing    Set dictCities = Nothing    If IsArray(arrFactSalesData) Then Erase arrFactSalesData    If IsArray(arrOutputData) Then Erase arrOutputData    If Err.Number = 0 And folderPath <> "" And spuColFact > 0 And customerIdColFact > 0 And cityIdColFact > 0 Then         MsgBox "数据整合完成!用时: " & Format(Timer - startTime, "0.00") & " 秒", vbInformation    ElseIf Err.Number <> 0 Then        MsgBox "操作过程中发生错误 (代码: " & Err.Number & "): " & Err.Description, vbCritical    End If    Err.Clear    Exit SubFileOpenErrorFactSales:    MsgBox "打开文件时发生错误: " & folderPath & factSalesFileName & vbCrLf & "错误描述: " & Err.Description, vbCritical    Err.Clear    GoTo CleanUpAndExitEnd Sub' 辅助函数:从外部文件加载字典数据 (V3)Sub LoadDictionary_V3(dict As Object, ByVal filePath As String, ByVal fileName As String, ByVal keyColNum As Long, ByVal valColNum As Long)    Dim wbDim As Workbook    Dim wsDim As Worksheet    Dim arrDim As Variant    Dim r As Long, lastRowDim As Long        If Len(Dir(filePath & fileName)) = 0 Then        MsgBox "维度文件 " & fileName & " 在指定文件夹中未找到!对应字典将为空。", vbExclamation        Exit Sub    End If        On Error GoTo LoadDictError_V3    Set wbDim = Workbooks.Open(filePath & fileName, ReadOnly:=True, UpdateLinks:=0)    Set wsDim = wbDim.Sheets(1) ' 始终假设数据在第一个工作表        lastRowDim = wsDim.Cells(wsDim.Rows.Count, keyColNum).End(xlUp).Row        If lastRowDim > 1 Then ' 至少要有数据行 (除了表头)        ' 确保读取的数组范围至少包含keyColNum和valColNum        Dim firstColToRead As Long, lastColToRead As Long        firstColToRead = Application.Min(keyColNum, valColNum)        lastColToRead = Application.Max(keyColNum, valColNum)                arrDim = wsDim.Range(wsDim.Cells(2, firstColToRead), wsDim.Cells(lastRowDim, lastColToRead)).Value                Dim actualKeyColInArray As Long, actualValColInArray As Long        actualKeyColInArray = keyColNum - firstColToRead + 1        actualValColInArray = valColNum - firstColToRead + 1                If IsArray(arrDim) Then             For r = LBound(arrDim, 1) To UBound(arrDim, 1)                If Not IsEmpty(arrDim(r, actualKeyColInArray)) Then                    If Not dict.Exists(CStr(arrDim(r, actualKeyColInArray))) Then                        dict.Add CStr(arrDim(r, actualKeyColInArray)), arrDim(r, actualValColInArray)                    End If                End If            Next r        Else ' 处理只读取到单行数据,Range返回非数组的情况            If lastRowDim = 2 And Not IsEmpty(arrDim) Then ' 特殊处理只有一行数据的情况                 If Not IsEmpty(wsDim.Cells(2,keyColNum).Value) Then                    If Not dict.Exists(CStr(wsDim.Cells(2,keyColNum).Value)) Then                        dict.Add CStr(wsDim.Cells(2,keyColNum).Value), wsDim.Cells(2,valColNum).Value                    End If                 End If            End If        End If    End If        wbDim.Close SaveChanges:=False    Set wsDim = Nothing    Set wbDim = Nothing    Exit SubLoadDictError_V3:    MsgBox "加载字典时打开或读取文件 " & filePath & fileName & " 失败。" & vbCrLf & "错误 (代码: " & Err.Number & "): " & Err.Description, vbExclamation    If Not wbDim Is Nothing Then wbDim.Close SaveChanges:=False    Set wsDim = Nothing    Set wbDim = Nothing    Err.ClearEnd Sub

运行后,会弹出一个选择文件夹的框,让我们选中包含多个数据表的文件夹:

选择后,运行,7s时间就帮我把表格的多个列匹配上了。

在实践的过程中容易遇到3个坑:

最后就是提示词的问题,因为涉及业务逻辑,或者表格描述,其实是要写精准了,最后给的VBA代码才能正确运行。我的解决方案是让AI去写提示词就好了,包括这几个案例,提示词这么标准的描述要做的动作,是因为我让DeepSeek给了多个提示词我选,然后我选择符合我预期的来调整即可!

对于表格涉及的,也可以直接给图,但DeepSeek不支持多模态,可以给到Gemini或者Claude,也是不错的选择。

以上就是今天分享的全部内容,如果对你有所帮助,还请点【关注】支持。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

VBA Excel AI 自动化
相关文章