VBA:将均值和标准差添加到动态生成的图形中
VBA: Add Mean and Standard Deviation to a dynamically generated graph
我目前正在使用这个函数生成图表:
Function make_chart(Fam, Data, Row_Start, Title)
Dim wbsheet As String
sheetName = ActiveSheet.Name
...
Set Char = Charts.Add
With Char
For Each s In .SeriesCollection
s.Delete
Next s
With .SeriesCollection.NewSeries()
.Values = Data
.XValues = Fam
End With
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = Title_Str
.HasLegend = False
.Name = Title_Str
.Axes(xlCategory).TickLabels.Font.size = 8
End With
Worksheets(sheetName).Activate
End Function
基本上它是在一个循环中调用的,该循环正在选择数据块以动态绘制图表。我被要求为这些图表中的每一个添加一个平均值和标准偏差,这些图表是在没有实际方法改变源工作表的情况下生成的。由于我无法更改源代码来生成此信息,因此我希望使用 Application.WorksheetFunction.StDev 和 WorksheetFunction.Average 来生成此信息并将其插入图表代码中。
有没有办法通过 .Values 或通过添加新系列来传递它。我仍然在思考 vba 如何生成图表,所以我想不出一种方法将数据带入我当前代码框架内的每个图表中。我之前发现添加系列似乎会在原始数据的绘制方式上产生错误。任何帮助将不胜感激。
您没有指定 Fam 和 Data 是范围还是数组。两者均可用作系列的 .Values 和 .XValues 属性。也可以在 WorksheetFunctions 中使用:
MyStDevX = WorksheetFunction.StDev(Fam)
MyStDevY = WorksheetFunction.StDev(Data)
MyMeanX = WorksheetFunction.Average(Fam)
MyMeanY = WorksheetFunction.Average(Data)
我目前正在使用这个函数生成图表:
Function make_chart(Fam, Data, Row_Start, Title)
Dim wbsheet As String
sheetName = ActiveSheet.Name
...
Set Char = Charts.Add
With Char
For Each s In .SeriesCollection
s.Delete
Next s
With .SeriesCollection.NewSeries()
.Values = Data
.XValues = Fam
End With
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = Title_Str
.HasLegend = False
.Name = Title_Str
.Axes(xlCategory).TickLabels.Font.size = 8
End With
Worksheets(sheetName).Activate
End Function
基本上它是在一个循环中调用的,该循环正在选择数据块以动态绘制图表。我被要求为这些图表中的每一个添加一个平均值和标准偏差,这些图表是在没有实际方法改变源工作表的情况下生成的。由于我无法更改源代码来生成此信息,因此我希望使用 Application.WorksheetFunction.StDev 和 WorksheetFunction.Average 来生成此信息并将其插入图表代码中。
有没有办法通过 .Values 或通过添加新系列来传递它。我仍然在思考 vba 如何生成图表,所以我想不出一种方法将数据带入我当前代码框架内的每个图表中。我之前发现添加系列似乎会在原始数据的绘制方式上产生错误。任何帮助将不胜感激。
您没有指定 Fam 和 Data 是范围还是数组。两者均可用作系列的 .Values 和 .XValues 属性。也可以在 WorksheetFunctions 中使用:
MyStDevX = WorksheetFunction.StDev(Fam)
MyStDevY = WorksheetFunction.StDev(Data)
MyMeanX = WorksheetFunction.Average(Fam)
MyMeanY = WorksheetFunction.Average(Data)