Я пытаюсь автоматически сгенерировать линейную диаграмму, используя VBA и Excel, где каждая точка данных имеет различный размер панели ошибок.
(Я хотел бы использовать мой переход к Python / matplotlib, но я связан по деловым причинам)
Я попытался записать макрос, чтобы увидеть, как это сделать, но код был такой:
Range("C2:C8").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet1'!$C$2:$C$8")
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!$B$2:$B$8"
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).HasErrorBars = True
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection(1).ErrorBars.Select
ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlBoth, _
Type:=xlCustom, Amount:=0
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection(1).ErrorBars.Select
Но это не слишком полезно - значение суммы равно нулю!
Итак, я попытался изменить это и поместить в подпрограмму, чтобы динамический диапазон диапазона ошибок был следующим:
Sub ErrorLine(sheetName As String, row1 As Integer, _
row2 As Integer, xcol As Integer, ycol As Integer, errCol As Integer)
Dim strErrorY As String
strErrorY = "=" & sheetName & "!" & _
Range(Cells(row1, errCol), Cells(row2, errCol)).Address()
Sheets(sheetName).Activate
Sheets(sheetName).Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(Cells(row1, ycol), Cells(row2, ycol))
ActiveChart.ChartType = xlLineMarkers
With ActiveChart.SeriesCollection(1)
.XValues = Range(Cells(row1, xcol), Cells(row2, xcol))
.HasErrorBars = True
.ErrorBars.Select
.ErrorBar Direction:=xlY, Include:=xlBoth, _
Type:=xlCustom, Amount:=strErrorY, MinusValues:= _
strErrorY
End With
End Sub
Но это просто дает мне линейный график, без ошибок. Может кто-нибудь мне помочь?
Помощь оценена.