您的位置:首页 > 编程语言 > VB

VBA实战技巧精粹018:如何汇总数据

2011-04-29 19:52 316 查看
以前从没在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
这段代码有用吗?有,用处非常大,比如在进行评比时,经常是分组分项对选手进行打分,这时评委手中拿到的都是针对所有选手或部分选手,而打分的项目往往是不同的,这时就可以利用这段代码对所有原始评分表进行汇总,然后再进行处理。

43 Things: Excel VBA
BuzzNet: Excel VBA
del.icio.us: Excel VBA
Flickr: Excel VBA
IceRocket: Excel VBA
LiveJournal: Excel VBA
Technorati: Excel VBA


菊子曰:专业的博客管理软件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: