久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA對多個工作簿進行合并計算(求和)一例

 春風秋雨12 2011-11-20
VBA對多個工作簿進行合并計算(求和)一例

Excel中的合并計算可以對多個工作表的對應項目進行求和,、求平均值等計算,,但如果需要合并計算的工作表較多,,特別是這些工作表位于不同的工作簿內時,,逐一選擇數據源顯得較為繁瑣,。用VBA中的Range.Consolidate方法可以快速地對多個結構相似的工作表進行合并計算,,但如果表格內包含有非數值類型的數據列,合并計算會忽略這些列,。例如下圖為某個圖書銷售點1至12月的圖書銷售記錄,,銷售數量位于D至O列,其中B列和C列為與A列對應的數據,,無需參與合并計算,,但必須在匯總表中列出。各銷售點都有一個類似的銷售表格,,每個分表列出的圖書數量不等,,圖書名稱也不盡相同。現在需要對各銷售點的銷售表格中D至O列的銷售數量按照A列圖書名稱進行合計,,求出總的銷售數量,。

VBA對多個工作簿進行合并計算(求和)一例

如果直接使用合并計算,Excel會忽略B列文本,,同時對C列(單價)也進行合并計算,,顯然不符合要求。這時使用VBA中的Dictionary對象,,可以解決這一問題,,代碼如下:

Sub SumWorkbooks()
Dim ThePath As String, TheFile As String
Dim d As Object, Wbk As Workbook
Dim i As Integer, j As Integer, k As Integer
Dim Arr1(11), Arr2(), Arr3(), dk

On Error Resume Next
Application.ScreenUpdating = False
Set d = CreateObject("scripting.dictionary")
ThePath = ThisWorkbook.Path & "\"
TheFile = Dir(ThePath & "*.xls")

Do While TheFile <> ""
If TheFile <> ThisWorkbook.Name Then
Set Wbk = GetObject(ThePath & TheFile)
With Wbk.Worksheets(1)
For i = 2 To .Range("A65536").End(xlUp).Row
'將D至O列數值賦值給Arr1
For j = 0 To 11
Arr1(j) = .Cells(i, j + 4).Value
Next j
If Not d.exists(.Range("A" & i).Value) Then
'key對應一個數組
d.Add .Range("A" & i).Value, Arr1
'將不能求和的數據賦值給Arr2
ReDim Preserve Arr2(1 To 2, 1 To k + 1)
For j = 1 To 2
Arr2(j, k + 1) = .Cells(i, j + 1)
Next j
k = k + 1
Else
For j = 0 To 11
'若數據存在則D至O列數值對應合計到Arr1中的每個元素
Arr1(j) = d(.Range("A" & i).Value)(j) + Arr1(j)
Next
d(.Range("A" & i).Value) = Arr1
End If
Next
End With
Wbk.Close False
End If
TheFile = Dir '當前文件夾內的下一個工作簿
Loop

'輸出
With ThisWorkbook.Worksheets(1)
.Range("A2").Resize(d.Count, 1) = Application.Transpose(d.keys)
dk = d.keys
ReDim Arr3(1 To d.Count, 1 To 12)
For i = 0 To d.Count - 1
For j = 0 To 11
Arr3(i + 1, j + 1) = d(dk(i))(j)
Next j
Next i
.Range("D2:O" & d.Count + 1).Value = Arr3
.Range("B2:C" & d.Count + 1).Value = Application.Transpose(Arr2)
End With

Set d = Nothing
Application.ScreenUpdating = True

End Sub

在匯總表中按Alt+F11,打開VBA編輯器,,單擊菜單“插入→模塊”,,粘貼上述代碼并運行,即可對匯總工作簿所在的文件夾內的其他所有工作簿的第一個工作表進行合并求和,,無需打開各個需要匯總的工作簿,。匯總后的B、C兩列為與A列對應的數據,。匯總前須注意以下幾點:

1.將匯總工作簿和其他各個工作簿放到同一文件夾內,,并保存匯總工作簿。匯總前移走文件夾內所有無關工作簿。

2.各分表應位于各工作簿中的最左側(第一個),。

3.各分表內的記錄數量可以不同,,但行標題需相同。

    本站是提供個人知識管理的網絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多