如何在y方向上改变误差线的权重

时间:2017-01-05 07:12:07

标签: excel vba charts

我正在尝试在Excel 2016中显示随着n增加的二项分布的直方图形状的变化。我的部分代码需要创建一个非常宽的误差条的散点图,如http://thydzik.com/histogram-with-normal-distribution-overlay-in-excel/所示 这样我就可以在直方图上得到一个平滑的直方图。

问题在于我无法修改y方向上误差线的权重。我记录了一个创建过程的宏,但是当我执行宏时,它会修改x错误条。

Sub Macro8()

    Range("F15:G25").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SetSourceData Source:=Range("Sheet4!$F$15:$G$25")
    ActiveChart.FullSeriesCollection(1).Select
    ActiveChart.SetElement (msoElementErrorBarStandardError)
    ActiveChart.FullSeriesCollection(1).HasErrorBars = True
    ActiveChart.FullSeriesCollection(1).ErrorBars.Select
    ActiveChart.FullSeriesCollection(1).ErrorBars.Select
    With Selection.Format.Line
        .Visible = msoTrue
        .Weight = 20
    End With
    ActiveChart.FullSeriesCollection(1).ErrorBars.EndStyle = xlNoCap
    ActiveChart.FullSeriesCollection(1).ErrorBar Direction:=xlY, Include:= _
        xlMinusValues, Type:=xlPercent, Amount:=100
    With Selection.Format.Line
        .Visible = msoTrue
        .Weight = 23.75
    End With
    ActiveChart.SeriesCollection(1).Name = "Smoothed Histogram"

End Sub

您可以看到预期结果与实际结果以及数据(对于不同情况会有所改变,因此需要修改权重)

image

我应该在代码中添加什么来强制它与y错误栏一起使用?

1 个答案:

答案 0 :(得分:0)

宏录制器并不总是你的朋友,错误栏周围的VBA对象模型不完整。但是,如果您只需要格式化Y错误条,那么以下代码对您来说就足够了。

Sub FatVerticalErrorBars()
    Range("F15:G25").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SetSourceData Source:=Range("Sheet4!$F$15:$G$25")
    ActiveChart.FullSeriesCollection(1).ErrorBar Direction:=xlY, Include:= _
        xlMinusValues, Type:=xlPercent, Amount:=100
    With ActiveChart.FullSeriesCollection(1).ErrorBars
        .EndStyle = xlNoCap
        With .Format.Line
            .Visible = msoTrue
            .Weight = 23.75
        End With
    End With
    ActiveChart.SeriesCollection(1).Name = "Smoothed Histogram"
End Sub