在Excel中,用數據透視表可以輕松進行多個區域的數據合并計算。但當區域較多時,要在數據透視表向導中多次選擇區域,稍顯繁瑣。如果需要合并的工作表較多,可以用下面的VBA代碼來快速合并數據。區域的大小可以不同,各行或列的品種可以重復,但要求工作簿中各工作表中的數據存放在相同的位置。如下圖為工作簿中某兩個工作表中的數據,區域的起始位置都是E5單元格:
方法是:將要存放合并數據的工作表命名為“匯總”,刪除工作簿中沒有合并數據的工作表,各工作表中要合并的數據右側和下邊沒有其他數據。然后在VBA編輯器中運行下面的代碼:
Sub Summary()
Worksheets("匯總").[e5].CurrentRegion.ClearContents
On Error Resume Next
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> "匯總" Then
With sh
‘獲取工作表中數據區域的行數
i = .[e65536].End(xlUp).Row
‘獲取工作表中數據區域的列數
j = .[iv5].End(xlToLeft).Column
‘將各工作表區域按R1C1樣式存入tempstr字符串中,各區域之間用","隔開
tempstr = tempstr & "’" & sh.Name & "’!R5C5:R" & i & "C" & j & ","
End With
End If
Next
‘清除tempstr字符串中最后一個","
tempstr = Left$(tempstr, Len(tempstr) – 1)
‘將tempstr字符串中的各區域名存入一維數組arr中
arr = Split(tempstr, ",")
‘將各個區域的數據合并計算到"匯總"表
Worksheets("匯總").[e5].Consolidate arr, xlSum, True, True
Worksheets("匯總").[e5] = Sheet1.[e5]
End Sub
上述代碼將工作簿中除“匯總”表以外的所有工作表中從E5單元格開始的區域合并計算到“匯總”表中