DeepSeek火爆Excel圈,批量合并工作表简直太好用!

发布日期:2025-03-07 14:54    点击次数:131

Excel情报局

职场联盟Excel

生产挖掘分享Excel基础技能Super Excel Man 用1%的Excel基础搞定99%的职场问题 做一个超级实用的Excel公众号 Excel是门手艺玩转需要勇气 数万Excel爱好者聚集地

图片

大家好,最近DeepSeek(深度求索)AI智能在抖音火爆了,听说美国的ChatGPT都感觉到了危机,最重要的是DeepSeek是开源免费的。智能化更加优秀。

那么如何运用DeepSeek实现在Excel中对工作簿内所有工作表进行批量合并呢?

如下图所示:

有“销售部”、“财务部”、“生产部”3张分表,我们想要将这3张分表合并到新的总表中,3张分表的首行都为格式和内容相同的标题行。并且合并后的总表也只能有首行一行标题行。

图片

DeepSeek Chat是由深度求索公司开发的AI智能助手。DeepSeek Chat基于DeepSeek大语言模型开发,可以进行自然语言处理和文本生成,回答各种问题,提供信息查询、对话交流、知识问答等服务。

图片

首先打开官网:https://www.deepseek.com可以点击“开始对话”在PC端直接使用,也可以点击“获取手机APP”在手机移动端使用。

图片

将针对于数据源的问题描述详细的输入在“发送消息对话框”内,勾选“深度思考”,并将你的问题数据源,如本例中的“Excel情报局”工作簿(需要合并工作表的数据源)作为附件上传。注意“上传附件”与“联网搜索”功能不能同时使用,必须使用其一。问题详细描述:【Excel工作簿内包含多个工作表,每个工作表第一行是标题行,将多个工作表中的数据合并到新的工作表中,并且首行为标题行。请写一段VBA代码,多思考几次】

图片

点击“发送”后,DeepSeek即可通过细致的思考,回答你的问题并给出思路:

图片

我们来摘要一段DeepSeek前期思考,整个过程感觉像人一样思考:

【嗯,用户有一个Excel工作簿,里面有多个工作表,每个工作表的第一行是标题行。用户想把这些不同工作表里的数据合并到一个新的工作表中,并且保留首行作为标题行。需要写一段VBA代码来实现这个功能。

首先,我需要理解每个工作表中的数据结构。比如,“销售部”、“财务部”、“生产部”都有相同的列结构:部门、姓名、工号。数据行从第二行开始,每个工作表有三行数据,但实际情况下可能有更多。我需要确保代码能处理不同数量的数据行。

接下来,合并数据的步骤应该是这样的:新建一个工作表,作为汇总表。然后遍历每一个现有的工作表,跳过第一个标题行,把数据复制到汇总表中。

需要注意的是,汇总表的标题行只需要出现一次,所以第一次复制时要包含标题,之后的不再包含,或者先单独复制标题行,再处理数据。

可能的陷阱:如果工作表中有除了数据之外的其它内容,比如中间有空行或者其它格式,可能会影响结果。但根据用户提供的数据示例,每个工作表的结构是规范的,所以暂时不需要处理这些特殊情况。

另外,要确保VBA代码能够动态识别所有的工作表,排除掉可能存在的非数据工作表。例如,用户可能有一个汇总表已经存在,或者在代码运行前需要先检查是否存在,若存在则删除或覆盖】

DeepSeek给出我们最终的VBA代码解决方案:

代码说明:

创建名为"汇总"的新工作表,若已存在则清空内容。

从第一个工作表复制标题行到汇总表首行。

遍历所有工作表(排除汇总表自身)。

自动识别每个工作表的数据范围(从A2到C列最后一行)。

将数据依次追加到汇总表中。

最终自动调整列宽并弹出完成提示。

Sub MergeSheets()    Dim ws As Worksheet    Dim SummarySheet As Worksheet    Dim LastRow As Long    Dim DestRow As Long    ' 创建/设置汇总表    On Error Resume Next    Set SummarySheet = ThisWorkbook.Sheets("汇总")    If SummarySheet Is Nothing Then        Set SummarySheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))        SummarySheet.Name = "汇总"    Else        SummarySheet.UsedRange.ClearContents    End If    On Error GoTo 0    ' 复制标题行(取第一个工作表的标题)    ThisWorkbook.Sheets(1).Rows(1).Copy SummarySheet.Rows(1)    DestRow = 2 ' 从第二行开始粘贴数据    ' 遍历所有工作表    For Each ws In ThisWorkbook.Worksheets        If ws.Name <> "汇总" Then            LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row            If LastRow > 1 Then ' 跳过仅含标题的工作表                ws.Range("A2:C" & LastRow).Copy SummarySheet.Range("A" & DestRow)                DestRow = DestRow + (LastRow - 1)            End If        End If    Next ws    ' 自动调整列宽    SummarySheet.Columns("A:C").AutoFit    MsgBox "数据合并完成!", vbInformationEnd Sub

DeepSeek还针对一些特殊情况给出的一些注意事项,很贴心:

注意事项:

确保所有工作表结构一致(列顺序:部门、姓名、工号)。

标题行必须位于每个工作表的第一行。

支持任意行数的数据合并。

结果保存在新建的"汇总"工作表中。

代码会跳过没有数据的工作表(仅含标题行的工作表)。

我们根据下面的“运行方法”,在Excel或WPS表格中进行操作,最终即可完成多工作表合并:

运行方法:

按 Alt+F11 打开VBA编辑器。

插入新模块。

粘贴代码。

按F5运行宏。

查看生成的"汇总"工作表。

图片

其实重复学习Excel,刚开始是挺难的,但重复的次数多了总会成为习惯,先从坚持一星期开始,你会爱上那种脑子又累,又无限充实的感觉。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。

图片

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

相关资讯