合并Excel工作簿多工作表数据并添加总计行的技术问询
合并多工作表并生成总计行的解决方案
方法一:用Power Query可视化操作(适合非编程用户)
- 打开你的Excel工作簿,切换到「数据」选项卡,点击「获取数据」→「自文件」→「自工作簿」,选中当前打开的工作簿。
- 在导航器里,按住Ctrl选中第1到10个工作表(后续新增工作表的话,下次操作重新选对应范围即可),点击「转换数据」进入Power Query编辑器。
- 统一处理每个工作表格式:
- 选中表格第一行,点击「主页」→「使用第一行作为标题」,确保表头正确识别。
- 标记总计行:假设总计行第一列是「总计」字样,点击「添加列」→「自定义列」,输入公式
= if [你的第一列列名] = "总计" then true else false(把「你的第一列列名」换成实际列名,比如“部门”“序号”)。 - 点击自定义列的筛选按钮,取消「true」选项以筛除总计行,之后删除这个自定义列。
- 处理完成后,点击「关闭并上载」,数据会自动加载到新工作表中。
- 添加总计行:在新工作表最后一行,直接用
=SUM(金额列单元格范围)计算,比如金额在D列就输入=SUM(D2:D1000),或者选中金额列最后一个单元格,点击「开始」选项卡的「求和」按钮一键生成。
方法二:用VBA脚本自动化(适合批量重复操作)
- 按
Alt+F11打开VBA编辑器,右键左侧工作簿名称,选择「插入」→「模块」。 - 粘贴以下代码,根据实际情况修改参数:
Sub MergeSheetsWithTotal() Dim ws As Worksheet Dim newWs As Worksheet Dim lastRow As Long Dim targetRow As Long Dim totalCol As Integer ' 金额列的列号,比如D列是4 Dim totalRowText As String ' 总计行的标识文本,比如"总计" ' 自定义参数修改区 totalCol = 4 ' 替换成你的金额列列号(A列=1,B列=2,以此类推) totalRowText = "总计" ' 替换成你工作表中总计行的标识文字 targetRow = 2 ' 新表从第2行开始粘贴数据(第1行留表头) ' 创建合并用的新工作表 Set newWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) newWs.Name = "合并数据" ' 从第一个工作表复制表头到新表 ThisWorkbook.Sheets(1).Rows(1).Copy newWs.Rows(1) ' 遍历第1到10个工作表(要合并更多表,把10改成对应数字即可) For Each ws In ThisWorkbook.Sheets If ws.Index >= 1 And ws.Index <= 10 Then lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' 排除总计行:判断最后一行第一列是否为设定的标识文本 If ws.Cells(lastRow, 1).Value = totalRowText Then lastRow = lastRow - 1 End If ' 复制当前工作表数据到新表 ws.Range("A2:" & ws.Cells(lastRow, totalCol).Address).Copy newWs.Cells(targetRow, 1) targetRow = newWs.Cells(newWs.Rows.Count, 1).End(xlUp).Row + 1 End If Next ws ' 添加合并后的总计行 newWs.Cells(targetRow, 1).Value = "总计" newWs.Cells(targetRow, totalCol).Formula = "=SUM(" & newWs.Cells(2, totalCol).Address & ":" & newWs.Cells(targetRow - 1, totalCol).Address & ")" ' 给总计行加粗(可选操作) newWs.Rows(targetRow).Font.Bold = True End Sub
- 修改完参数后按F5运行代码,自动生成名为「合并数据」的工作表,里面已剔除原表的总计行,并新增了合并后的总金额行。
内容的提问来源于stack exchange,提问作者Kalim Shaikh
相关产品推荐
相关产品推荐

