如何使用Excel VBA Macro将数据替换为季度而不是月份

时间:2016-03-23 14:06:39

标签: vba charts macros

我使用VBA创建了一个宏并创建了月份图表。请参阅下面的代码

Private Sub CommandButton1_Click()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Chart'!$A$1:$L$2")
ActiveChart.ChartType = xlLineStacked
Dim cht As Chart
Dim ser As Series
Set cht = ActiveChart
Set ser = cht.SeriesCollection(1)
cht.Parent.Width = 227
cht.Parent.Height = 200
ser.Format.Line.Visible = msoFalse
ser.Format.Line.Visible = msoTrue
ser.Format.Line.ForeColor.RGB = RGB(26, 46, 74)
ser.Format.Fill.ForeColor.RGB = RGB(26, 46, 74)
With Worksheets("Chart").ChartObjects(1).Chart
.HasTitle = True
.ChartTitle.Text = Sheets("Chart").Range("B10")
.ChartTitle.Font.Size = 12
.ChartTitle.Font.Color = RGB(26, 46, 74)
End With
With cht.PlotArea.Format.Fill
    .Visible = msoTrue
    .ForeColor.RGB = RGB(239, 239, 239)
    .Transparency = 0
    .Solid
   End With
 With cht.ChartArea.Fill
.Visible = True
.ForeColor.SchemeColor = 15
.BackColor.SchemeColor = 15
.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
End With
Dim co As ChartObject
For Each co In ActiveSheet.ChartObjects
co.Chart.ChartArea.Format.Fill.Visible = msoFalse
co.Chart.PlotArea.Format.Fill.Visible = msoFalse
Next
Dim Srs As Series
Set Srs = ActiveChart.SeriesCollection(1)
Srs.Name = ""
Dim ChartObj As Object
For Each ChartObj In Sheets("Chart").ChartObjects
ChartObj.Chart.Location xlLocationAsObject, "Factsheet"
With ActiveSheet
.ChartObjects(1).Top = .Range("D8").Top
.ChartObjects(1).Left = .Range("D8").Left
End With
Next ChartObj
End Sub

我如何创建带有四分之一数据的图表,显示月份,它将显示Q1,Q2,Q3,Q4。

是否可以使用VBA创建?

提前致谢。

1 个答案:

答案 0 :(得分:0)

将数据汇总到四分之一的最佳方法是插入数据透视表并使用" group"通过右键单击任何日期值来进行功能。

修改1 回应@Anahit DEV评论。没有源代码就很难编写任何代码。但是,下一个宏将帮助您实现目标。请注意,我为您写了一些评论,您必须在必要时替换这些值。

$_SESSION