vba图表X轴

时间:2019-01-06 13:30:06

标签: excel vba charts

这是我的VBA代码。 我正在绘制一个图表,在该图表上显示一系列值。 我想在图表的X轴上显示年份和季度。

Sub VBAChart2()

    Dim colunmA As Integer
    colunmA = Range("B1").End(xlToRight).Column - 1

    Dim Num As Integer
    Dim xrng As Range

    Set xrng = Range("C2:F2")

back:
Num = InputBox("àéæå ùåøä ìäöéâ áâøó?")
    If colunmA > Num And Num > 0 Then

        ActiveSheet.Shapes.AddChart2(201, xlXYScatterLines, Range("L10").Left, Range("L10").Top, 450, 200).Select

        With ActiveChart

        .SetSourceData Source := Range(Range("B2").Offset(0, Num - 1), Range("C3:C6").Offset(0, Num - 1))
        .SetElement(msoElementDataLabelTop)

        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ùðä åøáòåï"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "îëø SO"

        .SeriesCollection(1).XValues = xrng
        .SeriesCollection(1).Values = Range("C1:F2")

        End With

        Else: MsgBox("ðà ìä÷ìéã îñôø ùåøä äîåôéò áèáìä")
        GoTo back

    End If

End Sub

2 个答案:

答案 0 :(得分:0)

我认为您的建议是不可能的。我不知道有什么简便的方法可以简单地将某些日期/范围设置为xvalues并让Excel自动推断季度。

但是,如果您不限于xlXYScatterLines图表类型,并且可以随意在源数据(在工作表上)中添加其他图表类型,则可以尝试以下操作。

如果我这样创建一些虚拟数据(黄色单元格为x values,绿色单元格为values):

Source data

,然后使用下面的代码(指的是上图中的范围/单元格):

Option Explicit

Sub PlotQuarterAndYears()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")

    With ws.Shapes.AddChart2(201, xlLine, ws.Range("L10").Left, ws.Range("L10").Top, 450, 200).Chart

        .ChartTitle.Text = "Some chart"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Text = "ùðä åøáòåï"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Text = "îëø SO"

        With .SeriesCollection.NewSeries
            .XValues = ws.Range("C2:F3")
            .Values = ws.Range("C4:F4")
        End With
    End With

End Sub

然后我得到这个:

Output chart

似乎正是您所描述的。显然,您需要适应自己的源数据/范围/工作表,但是主要的收获是将xvalues放在两行中并绘制折线图。

答案 1 :(得分:-1)

不幸的是,Excel图表不够灵活。您最终得到一个标记为“均匀”的X轴,这仅仅是所显示内容的问题,例如“ 2015,2016,2017,2018”或“ 2015Q1、2015Q2、2015Q3 ...”或其他任何内容- -一个轴,仅一系列轴标签。是的,Excel不是最好的制图工具:(

另一种可能性(顺便说一句,我非常不喜欢……)是拥有两个Y轴,这将为您提供两个X轴。但是,它们最终会排在图表的顶部和底部(如此处https://superuser.com/questions/188064/excel-chart-with-two-x-axes-horizontal-possible所述)。