条形图上的垂直线

时间:2015-08-25 13:41:35

标签: excel vba excel-vba

enter image description here

如何在25个点添加垂直线。我尝试使用添加系列方法,但不知何故,我无法获得我需要为该行提供的范围。我得到25的水平线,但我需要一个垂直线。

  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection(4).ChartType = xlLine
  ActiveChart.SeriesCollection(4).XValues = Sheets("Sheet1").Range("B5")

B5细胞值25 。另外我发现如果我在代码中只使用Values而不是Xvalues,我会得到25的水平线,所以我很确定我需要使用Xvalues但不能获得完成工作的范围。在当前的代码中,该行无处可见,但图例显示已添加新系列。

另外:如果我使用XlcolumnStacked图表类型,那么水平线对我来说非常适合。 (当我使用值时,我得到一条水平线,这对于柱形图而不是条形图来说是完美的。)

1 个答案:

答案 0 :(得分:1)

这应该这样做:

Public Sub AddVerticalLine()
    Dim k&, s&
    k = Sheet1.[b5]
    With ActiveChart
        s = .SeriesCollection.Count
        With .SeriesCollection.NewSeries
            .ChartType = xlXYScatterLines
            .MarkerStyle = xlNone
            .Formula = Replace("=SERIES(,{.;.},{1;0}," & s & ")", ".", k)
        End With
        With .Axes(xlValue, xlSecondary)
            .MaximumScale = 1
            .Delete
        End With
    End With
End Sub

要完成添加垂直线,您需要将该线的系列添加为XYScatterLines的图表类型。该图表类型默认包含该行上每个数据点的标记点。我以为你不想要那些因为它们在视觉上分散注意力。我将它们设置为xlNone

使用XYScatter类型图表时,您需要为每个数据点提供两个数字... x值和y值。要绘制一条线,您需要两个数据点。这是我们需要包含在要绘制的系列中的四个数字。根据您的示例,您似乎希望从单元格B5的值中键入该行。所以我使用它并根据单元格B5的值创建了该行的四个数字。

下一个问题是要意识到这条新线将根据辅助y轴进行缩放。一旦我们添加垂直线,Excel就会使这个额外的y轴可见,但它假设我们需要一些填充,因此选择比我们的线稍高的比例的最大值范围。我的代码重置了比例,以便该线填充绘图区域的整个垂直空间。

最后,我删除了这个辅助轴,它实际上没有删除它,而是隐藏它。

就是这样。