利用 for each sh in ActiveWorkbook.Sheets 的方式比较通用,如果你的工作表不是 1月 2月 …… ,而是其他的名称,那么就要修改程序了,因此采用如上面的循环那么就不用修改程序。 Sub 富戈() Sheet4.[a4].CurrentRegion.ClearContents On Error Resume Next Dim sh As Worksheet For Each sh In ActiveWorkbook.Sheets If sh.Name <> "汇总" Then With sh j = .[a65536].End(xlUp).Row k = .[iv1].End(xlToLeft).Column pp = pp & "'" & sh.Name & "'!R1C1:R" & j & "C" & k & "," End With End If Next pp = Left$(pp, Len(pp) - 1) arr = Split(pp, ",") Sheet4.[a4].Consolidate arr, xlSum, True, True Sheet4.[a4] = Sheet1.[a1] End Sub |