在学习本课的内容之前,请打开示例文件"统计演示.Table"。
示例一,统计同一客户订购不同产品的数量
将下面的代码复制到命令窗口执行:
Dim
b As New
CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户")
'添加客户列用于水平分组
b.VGroups.AddDef("产品")
'添加产品列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Build '生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例二,美化示例一
将示例一的代码修改为:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("产品","产品_{0}") '添加产品列用于垂直分组,并设置了Pattern参数
b.Totals.AddDef("数量") '添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例三,统计同一个客户订购不同产品的数量和金额
将下面的代码复制到命令窗口执行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("产品") '添加产品列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Totals.AddDef("金额")
'添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例四,重复示例三,同种类型的统计排列在一起
示例三中,同一种产品的统计数据判列在一起,如果希望同种类型的统计数据排列在一起,以便于比较,可将代码修改为:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("产品") '添加产品列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Totals.AddDef("金额")
'添加数量列用于统计
b.OrderByTotal = True '同种类型的统计数据排列在一起
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例五:统计同一客户不同月份的订购数量
将下面的代码复制到命令窗口执行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("日期","{0}月") '添加日期列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例六,按年月统计每个客户的订购数量
将下面的代码复制到命令窗口执行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("日期",DateGroupEnum.Year,"{0}年")
'添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("日期","{0}月")
'添加日期列用于垂直分组,按月分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例七,重复示例六,在垂直和水平方向加上汇总
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.VGroups.AddDef("日期",DateGroupEnum.Year,"{0}年") '添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("日期","{0}月") '添加日期列用于垂直分组,按月分组
b.Totals.AddDef("数量") '添加数量列用于统计
b.VerticalTotal= True '垂直汇总
b.HorizontalTotal = True '水平汇总
b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表
统计结果:
提示: 垂直方向自动汇总现在比较少用了,因为CrossTableBuilder已经可以对生成的统计结果进行二次统计,直接生成汇总模式了,下面会有专门一节对此进行介绍。
示例八,重复示例六,但是水平分组和垂直分组对调
将下面的代码复制到命令窗口执行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于水平分组,按年分组
b.HGroups.AddDef("日期","月") '添加日期列用于水平分组,按月分组
b.VGroups.AddDef("客户","客户_{0}") '添加客户列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果:
示例九,多个水平分组
统计不同产品和客户,在各月份的销售数量,将下面的代码复制到命令窗口执行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("客户") '添加客户列用于水平分组
b.HGroups.AddDef("产品") '添加客户列用于水平分组
b.VGroups.AddDef("日期",DateGroupEnum.Year,"{0}年")
'添加日期列用于垂直分组,按年分组
b.VGroups.AddDef("日期","{0}月")
'添加日期列用于垂直分组,按月分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Build
'生成统计表
Maintable = Tables("统计表1")
'打开生成的统计表
统计结果: