如何将Excel工作簿500个工作表的E列汇总到新工作表?
嘿,这个需求我太熟悉了!500个工作表手动复制肯定疯掉,给你两个超省心的方法,尤其是第一个,几乎不用碰代码,完美适配你的场景:
方法1:用Power Query(强烈推荐,零代码操作)
这是Excel自带的工具,专门处理这种多表汇总的场景,步骤超清晰:
- 先给你的工作簿新建一个空白工作表,比如命名为「E列汇总表」
- 切换到「数据」选项卡,点击「获取数据」→「自文件」→「自工作簿」,选中当前这个有500个工作表的文件,点「导入」
- 在弹出的「导航器」窗口里,别选单个工作表,直接点左下角的「编辑」,进入Power Query编辑器
- 如果你的E列有表头,先点「转换」选项卡的「将第一行用作标题」;要是没表头,这步直接跳过
- 接下来只留E列:选中E列(或者对应的表头名称),右键选「删除其他列」,这样编辑器里就只剩所有工作表的E列数据了
- 点击「主页」选项卡的「关闭并上载至」,在弹窗里选「仅创建连接」,顺便勾选「将此数据添加到数据模型」,然后点「加载」
- 回到Excel界面,点「数据」→「现有连接」,找到刚才创建的连接,点「打开」,在「导入数据」窗口选「表」,放置位置选「E列汇总表」的A1单元格,确定就搞定了!
- 之后原工作表E列有更新的话,只要在汇总表的数据集上右键,选「刷新」就能同步最新数据,超方便
方法2:用VBA宏(适合喜欢代码的朋友)
如果习惯用宏操作,这个方法一步到位:
- 打开工作簿后,按
Alt + F11打开VBA编辑器 - 右键左侧的工作簿名称,选「插入」→「模块」,把下面的代码粘贴进去:
Sub 批量汇总E列数据() Dim ws As Worksheet Dim summarySheet As Worksheet Dim lastRow As Long Dim sourceLastRow As Long ' 创建汇总表(不存在就新建) On Error Resume Next Set summarySheet = ThisWorkbook.Worksheets("E列汇总表") If Err.Number <> 0 Then Set summarySheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)) summarySheet.Name = "E列汇总表" End If On Error GoTo 0 ' 遍历所有工作表,跳过汇总表本身 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "E列汇总表" Then sourceLastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row ' 复制E列数据到汇总表(如果不需要表头,把E1改成E2) ws.Range("E1:E" & sourceLastRow).Copy summarySheet.Cells(summarySheet.Rows.Count, 1).End(xlUp).Offset(1, 0) End If Next ws MsgBox "所有工作表E列汇总完成!", vbInformation End Sub
- 按
F5运行宏,或者回到Excel界面,点「开发工具」→「宏」,选中这个宏运行就行 - 注意:运行前记得把工作簿保存为「启用宏的工作簿(.xlsm)」格式,不然宏会丢失
小提醒
- 如果你的每个工作表E列都有重复表头,方法1可以在Power Query编辑器里选「移除重复项」或者设置加载时忽略表头;方法2的代码里把
E1改成E2就能跳过表头复制 - Power Query支持Excel 2016及以后版本,2013版本需要单独安装Power Query插件
内容的提问来源于stack exchange,提问作者Donal Lowry
相关产品推荐
相关产品推荐

