0

我从 Access 获取数据,复制到 Excel 工作表并使用 Excel VBA 创建图表。数据如下所示:

在此处输入图像描述

图表如下所示:

http://s2.postimg.org/rpixiwb3d/chart.png

我想在表格中显示所有交易,但在图表中我想显示日期的总和。例如,2015 年 8 月 19 日的总金额为 2695,2015 年 8 月 20 日的总金额为 287。

如何在 VBA Excel 中创建图表以显示每天的总和?

4

2 回答 2

1

我同意@ChipsLetten

1.- 从 SQL 你可以使用这样的东西:

 ---- This is the sum for each day
SELECT 
    t.DOT, SUM(t.Amount)
    ---- You can add an extra Column with the SUM by Dates
    /*
    t.Dot, t.Category, t.Item, t.Amount
    , SUM(t.Amount) OVER(PARTITION BY t.Dot ORDER BY t.Dot) [SumTrans]
    */
FROM Transactions t
GROUP BY t.DOT
-- If you add the Column you must change "GROUP BY"
-- GROUP BY t.Dot, t.Category, t.Item, t.Amount

添加列,您可以使用DOTSumTrans系列来创建图表

2.- 使用数据透视表更好,您可以克隆您的记录集以创建一个数据透视表,允许您按 DOT 求和金额

*Wkb is a Workbooks object, Wks is a Worksheet object*

Dim oRstChrt As ADODB.Recordset, oStrm As ADODB.Stream
Dim oChrt As Chart

'' Copy Recordset for the pivot table cache
Set oRstChrt = New ADODB.Recordset
Set oStrm = New ADODB.Stream

'' Create an alternative Recordset for the new pivot table
oRst.Save oStrm
oRstChrt.Open oStrm

'' Set Recordset to cache for a pivot table
Set objPivotCache = _
    Wkb.PivotCaches.Create(SourceType:=xlExternal, Version:=xlPivotTableVersion14)
'' Recordset with Data
Set objPivotCache.Recordset = oRstChrt
'' Assign Range for the pivot table and Name it.
With objPivotCache
    .CreatePivotTable TableDestination:=Wks.Range([Cell]), TableName:=[PivotTable_Name]
End With

然后输入您需要的字段, 在本例中为DOTAmount

With Wks.PivotTables([PivotTable_Name])

    With .PivotFields("DOT")
        .Orientation = xlRowField
        .Position = 1
    End With
    '' You can create a second level, but 
    '' if the field is not collapse, your chart will change, 
    '' so keep the field collapse
    '' To Collapse the field put this
    '' Wks.PivotTables([PivotTable_Name]). _
    ''        PivotFields([PivotTableField]).ShowDetail = False
    'With .PivotFields("Item")
        '.Orientation = xlRowField
        '.Position = 2
    'End With

    '' This allows you to SUM the Amount field
    .AddDataField .PivotFields("Amount"), "Total Amount", xlSum

End

'' After the Pivot Table was created you can create your chart
'' Set the object
Set oChrt = Charts.Add
'' Give a name and format
With oChrt
    .Name = "[Chart_Name]"
    .ChartType = xlColumnClustered  '' you could change to 3D
    '' Source Range in this case from the pivot table
    .SetSourceData Source:=Wks.PivotTables([PivotTable_Name]).TableRange2, _
                                PlotBy:=xlRows
    '' Format chart
    .HasTitle = True
    .ChartTitle.Text = "Total Transactions"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Dates"
'    .Axes(xlValue, xlPrimary).HasTitle = True
'    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Transactions"
End With
于 2016-03-10T23:26:39.077 回答
0

你有两个选择:

  1. 使用 SUM 和 GROUP BY 运行另一个 SQL 查询,为您提供总计。这是图表的数据。

  2. 查看在 Excel 中使用数据透视图。这将为您计算总数并绘制图表。

于 2015-08-27T12:30:32.213 回答