VBA实战技巧精粹018:如何汇总数据
以前從沒在Excel中利用VBA匯總過數據,其實在Excel中也幾乎沒有匯總過數據,主要要是因為很多時候匯總還不如直接計算來的直接。既然看到這兒了,就把匯總數據好好學習一下吧。
根據實際情況一般而言,需要匯總的數據源有兩種:①在同一工作簿中的所有工作表或指定工作表;②不同工作簿中的指定工作表(這種情況下往往不會是所有工作簿中的所有工作表)。下面分情況解決:
①在同一工作簿中的所有工作表的匯總:
先解決可以進行的匯總操作:
xlAverage?? 計算平均值
xlCount???? 計數
xlCountNums 數值計數
xlMax?????? 最大值
xlMin?????? 最小值
xlProduct?? 乘積
xlStDev???? 標準偏差
xlStDevP??? 總體標準偏差
xlSum?????? 求和
xlVar?????? 方差
xlVarP????? 總體方差
其中紅色部分是為比較常用的,下面看一個示例:
目的是想把每個人在一月、二月、三月的各項業務量匯總求和到新工作表(匯總表)中。
對一月、二月、三月中的人名不作要求,可以不盡相同,也并不一定非得是只有3項業務,也可以業務4、業務5等等,這些都可以包括在內。
代碼:
?Sub ConsolidateDemo()
???? Dim Arr? As Variant
???? Arr = Array("一月!R1C1:R5C4", "二月!R1C1:R6C5", "三月!R1C1:R5C4")
???? With Worksheets("匯總").Range("A1")
???????? .Consolidate Sources:=Arr, Function:=xlSum, _
??????????????????? TopRow:=True, LeftColumn:=True
???????? .Value = "姓名"
???? End With
?End Sub
上面的代碼中,首先定義一個數組,利用數組函數Array來給數組Arr賦值,然后在匯總工作表中的A1單元格填充匯總數據,來源是數組Arr的元素,要進行的匯總操作函數是xlSum求和,基于頂端行的列標題進行計算,基于左邊列的行標題進行計算,這與實際情況也一致。
代碼還可以進行進一步的簡化,由于這些工作表都是存在于同一工作簿中,所以完全省略Sources參數,這樣默認就是對當前工作簿中的其他工作表的A1單元格的當的區域進行匯總。
因為Consolidate方法同時基于行列匯總時將忽略區域左上角的內容,所以需要另外添加代碼為左上角單元格賦值。
?Sub ConsolidateDemo2()
???? Dim Arr? As Variant
???? With Worksheets("匯總").Range("A1")
???????? .Consolidate Function:=xlSum, _
??????????????????? TopRow:=True, LeftColumn:=True
???????? .Value = "姓名"
???? End With
?End Sub
這段代碼有用嗎?有,用處非常大,比如在進行評比時,經常是分組分項對選手進行打分,這時評委手中拿到的都是針對所有選手或部分選手,而打分的項目往往是不同的,這時就可以利用這段代碼對所有原始評分表進行匯總,然后再進行處理。
?
BuzzNet: Excel VBA
del.icio.us: Excel VBA
Flickr: Excel VBA
IceRocket: Excel VBA
LiveJournal: Excel VBA
Technorati: Excel VBA
?菊子曰:專業的博客管理軟件
轉載于:https://www.cnblogs.com/xiehui/archive/2011/04/29/2033091.html
總結
以上是生活随笔為你收集整理的VBA实战技巧精粹018:如何汇总数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++rs法计算hurst指数_计算机组
- 下一篇: 《Unity3D脚本编程与游戏开发》学习