Public Sub QuickConsolidateMethod() '声明变量 Dim Wb As Workbook, OpenWb As Workbook Dim Sht As Worksheet, OneSht As Worksheet Dim Rng As Range, OneRng As Range, RangeAddress As String Const SHEET_INDEX = 1 Const RANGE_ADDRESS = "C5:L17" Dim FirstCell As Range Dim Arr() As String ReDim Arr(1 To 1) Dim FolderPath, FileName, FileIndex '设置对象 Set Wb = Application.ThisWorkbook Set Sht = Wb.ActiveSheet Set Rng = Sht.Range(RANGE_ADDRESS) Set FirstCell = Rng.Cells(1, 1) '合计结果输出位置的左上角 RangeAddress = Rng.Address(ReferenceStyle:=xlR1C1) '选用指定格式的单元格地址 FolderPath = Wb.Path & "各部门" '各部门工作簿文件夹 FileIndex = 0 FileName = Dir(FolderPath & "*.xls*") Do While FileName <> "" FileIndex = FileIndex + 1 ReDim Preserve Arr(1 To FileIndex) Set OpenWb = Application.Workbooks.Open(FolderPath & FileName) '若工作表已经有统一名称,则不需要打开 Set OneSht = OpenWb.Worksheets(SHEET_INDEX) Arr(FileIndex) = "'" & FolderPath & "[" & FileName & "]" & OneSht.Name & "'!" & RangeAddress '构造引用地址 OpenWb.Close False '关闭文件 FileName = Dir Loop '执行合并计算方法 FirstCell.Consolidate Sources:=Arr, Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False '释放对象 Set Wb = Nothing: Set Sht = Nothing Set Rng = Nothing: Set OpenWb = Nothing Set OneSht = Nothing End Sub