当前位置: 首页 > 办公技巧 > 正文

办公技巧汇总报表(办公自动化——数据查询及汇总分析)

  • 叁碗诸角 叁碗诸角
  • 办公技巧
  • 2023-07-04 14:50:19
  • 0

点击蓝字 关注我们

手机亲爱的你还好吗

之前给大家讲了一下生产信息报表怎么做,并且可以生成相应的excel文档,广大的网友给我私信说不能接着再讲一些相应的报表分析的例子,那今天我们就给大家来分享一个查询统计结合图表的示例。

我们大概要做这样的分析功能。

我们先简单分析一下,我们需要做哪些东西,这个窗体上,我们需要放一个图表,一个数据表窗体,查看图表的同时,我们可以查看数据,选择条件的同时,图表与数据一起发生变化。接下去我们来实现这些操作。

01、建表

创建如下图一样的表,然后我往表中添加一些数据。

02、创建子窗体

我们先创建一个数据表窗体。

我先把子窗体的数据源设置为:

SELECT Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00') AS 周期,产品名称, 产品类别,客户名称, Sum(销售数量) AS 销售数量之总计 FROM 销售信息表 GROUP BY Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00'), 产品名称, 产品类别, 客户名称;

03、创建主窗体

如下图,我们创建一个主窗体,在主窗体中添加两个选项组控件,分别在两个选项组中添加单选按钮,接着添加一个选项卡控件,在选项卡中添加两个页,一个放图表控件,一个放子窗体控件。主窗体上控件比较多,大家要有耐心,一个一个排版好。

注意:选择区间默认值填写3,这默认选择为月,图表的默认值为51,这样默认为柱形图

04、添加代码

接下我们来添加一下代码

Function 执行查询()Dim strWhere As StringDim strField As StringDim strFormat As StringDim strCaption As StringConst xlCategory = 1 '在这里声明常量是为了去掉图表类型库的引用后代码也能正常运行Select Case Me.区间单位Case 1strCaption = "日"strField = "销售日期"strFormat = "yyyy-mm-dd"Case 2strCaption = "周"strField = "Year([销售日期]) & '-' & Format(DatePart('ww',[销售日期]),'00')"strFormat = "yyyy-mm"Case 3strCaption = "月"strField = "Format([销售日期],'yyyy-mm')"strFormat = "yyyy-mm"Case 4strCaption = "季"strField = "Year([销售日期]) & '-' & DatePart('q',[销售日期])"strFormat = "yyyy-mm"Case 5strCaption = "年"strField = "Year([销售日期])"strFormat = "0"End Select'设置子窗体中区间字段标题Me.子窗体!周期.Controls(0).Caption = strCaption'重置子窗体的数据源Me.子窗体.Form.RecordSource = " SELECT " & strField & " AS 周期,产品名称," _& " 产品类别,客户名称,Sum(销售数量) AS 销售数量之总计" _& " FROM 销售信息表" & strWhere _& " GROUP BY " & strField & ",产品名称,产品类别,客户名称;"'重置图表的数据源Me.Graph.RowSource = " TRANSFORM Sum(销售数量) AS 销售数量之总计" _& " SELECT " & strField & " AS 周期" _& " FROM 销售信息表" & strWhere _& " GROUP BY " & strField & "" _& " PIVOT 客户名称"On Error Resume NextMe.Graph.Axes(xlCategory).TickLabels.NumberFormatLocal = strFormatEnd FunctionPrivate Sub Form_Load()Call 执行查询End SubPrivate Sub 区间单位_AfterUpdate()Call 执行查询End SubPrivate Sub 图表样式_AfterUpdate()'选项按钮的选项值必须和下面常量的值对应Const xlColumnClustered = 51Const xlBarClustered = 57Const xlLine = 4Const xlColumnStacked = 52Const xl3DPieExploded = 70Const xlCylinderColClustered = 92Const xlRows = 1Const xlColumns = 2'更改图表样式Me.Graph.Object.ChartType = Me.图表样式'行列切换If Me.图表样式 = xl3DPieExploded ThenMe.Graph.Object.Application.PlotBy = xlRowsElseMe.Graph.Object.Application.PlotBy = xlColumnsEnd IfEnd Sub

05、运行测试

最后,就是来运行测试了,我们来看一下效果


最新文章