如何用打开的Excel工作簿汇总同文件夹下多个关闭工作簿的行列数据
对关闭的同结构Excel工作簿批量求和的解决方案
方法1:使用Power Query(无需代码,推荐)
这是Excel内置的高效工具,完美适配关闭文件的批量汇总需求,步骤如下:
- 打开用于存放汇总结果的当前工作簿,选中目标单元格
- 点击数据选项卡 → 获取数据 → 从文件 → 从文件夹
- 在弹窗中选择存放所有目标工作簿的文件夹,点击确定
- 在文件夹内容界面,点击顶部的合并文件按钮
- 在合并向导里,任选一个目标工作簿作为示例文件,选择要合并的工作表(如Sheet1),点击确定
- 进入Power Query编辑器后,可直接完成求和操作:
- 选中需求和的列,点击转换选项卡 → 统计列 → 求和(若需按行求和,可先转置数据,求和后再转置回来)
- 也可添加自定义列,用
List.Sum([目标列名])公式计算指定列的行内求和
- 最后点击关闭并上载,汇总结果会直接导入当前工作簿
方法2:使用VBA代码(自定义性更强)
如果需要针对性的逻辑处理,可通过VBA实现批量求和,以下是基础示例代码:
Sub SumClosedWorkbooks() Dim folderPath As String Dim fileName As String Dim totalSum As Double Dim targetWs As Worksheet ' 替换为你的目标文件夹路径 folderPath = "C:\YourTargetFolder\" ' 指定当前工作簿中存放结果的工作表 Set targetWs = ThisWorkbook.Worksheets("汇总表") ' 遍历文件夹内的Excel文件 fileName = Dir(folderPath & "*.xlsx") Do While fileName <> "" ' 跳过当前工作簿本身 If fileName <> ThisWorkbook.Name Then ' 累加指定区域的总和(替换A1:C10为你的目标数据区域) totalSum = totalSum + Application.Sum( _ GetObject(folderPath & fileName).Worksheets(1).Range("A1:C10") _ ) ' 临时打开的工作簿直接关闭,不保存 GetObject(folderPath & fileName).Close False End If fileName = Dir Loop ' 将最终结果写入指定单元格(替换A1为你的结果存放位置) targetWs.Range("A1").Value = totalSum End Sub
使用说明:
- 按
Alt+F11打开VBA编辑器,插入新模块后粘贴代码 - 修改
folderPath、求和区域、结果单元格等参数为你的实际需求 - 运行宏即可完成所有关闭工作簿的批量求和
补充说明
SUMIF/SUMIFS确实无法直接处理关闭工作簿的条件求和场景,而Power Query或VBA是更可行的替代方案。如果需要按特定条件求和,Power Query可在编辑器中添加筛选步骤后再执行求和;VBA则可通过遍历单元格判断条件后累加计算。
内容的提问来源于stack exchange,提问作者Mutuelinvestor
相关产品推荐
相关产品推荐

