混合多种统计
之前每一种分组都只进行了一种统计,就是累计值。
汇总模式提供了很多统计方式,通过SubtotalGroup的Aggregate属性,可以指定统计类型,此属性是AggregateEnum型枚举,包括以下可选值:
Average:平均值
Count:记录数
Max:最大值
Min:最小值
Percent:百分比
Std:标准偏差
StdPop:总体标准偏差
Sum:累积值
Var:方差
VarPop:总体方差
我们前面的代码都没有指定Aggregate属性,这是因为Aggregate属性的默认值是AggregateEnum.Sum,也就是求和,而我们日常统计多数也是求和。
汇总模式有一个很重要的特性,就是同一个分组,可以进行多种不同类型的统计。
打开本章示例文件“统计演示.Table”,选择“学生成绩”表,我们希望同时统计出最大分、最低分和平均分,代码为:
Dim
t As
Table = Tables("学生成绩")
Dim
g As
Subtotalgroup
t.SubtotalGroups.Clear()
'按班统计各科的最低分|最高分|平均分
g =
New Subtotalgroup
g.Aggregate
= AggregateEnum.Min
g.GroupOn
= "班级"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "{0}
最低分"
t.SubtotalGroups.Add(g)
g
= New Subtotalgroup
g.Aggregate
= AggregateEnum.Max
g.GroupOn
= "班级"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "{0}
最高分"
t.SubtotalGroups.Add(g)
g =
New Subtotalgroup
g.Aggregate
= AggregateEnum.Average
g.GroupOn
= "班级"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "{0}
平均分"
t.SubtotalGroups.Add(g)
'统计全校各科的最低分|最高分|平均分
g =
New Subtotalgroup
g.Aggregate
= AggregateEnum.Min
g.GroupOn
= "*"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "最低分"
t.SubtotalGroups.Add(g)
g =
New Subtotalgroup
g.Aggregate
= AggregateEnum.Max
g.GroupOn
= "*"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "最高分"
t.SubtotalGroups.Add(g)
g =
New Subtotalgroup
g.Aggregate
= AggregateEnum.Average
g.GroupOn
= "*"
g.TotalOn
= "数学,英语,物理,化学,总分"
g.Caption
= "平均分"
t.SubtotalGroups.Add(g)
t.Subtotal()
上面的代码中,班级分组和总计分组,都进行了最高分、最低分和平均分三种统计。
代码看起来很长,实际上每一段都基本相同,复制粘贴后修改统计类型、分组列和标题即可,为方便大家阅读理解,我特意在每段之间加上了空行。
上述代码得到的汇总模式如下: