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,刚开始是挺难的,但重复的次数多了总会成为习惯,先从坚持一星期开始,你会爱上那种脑子又累,又无限充实的感觉。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。