我有一张测量表,每个数据点都经过多次测量。
我想创建一个数据透视图,显示平均值并使用该值的标准差作为误差线。
这是我目前所拥有的:
- 我的数据表有一个类别列(日期和时间)和一个值列。
- 我有一个数据透视表,它可以生成平均值,也可以生成标准差
- 我的图表目前显示平均值和标准差作为单独的数据系列。
我想要 stdDev 系列(橙色)不是在图表中,但使用平均系列(蓝色)来显示误差线。这些误差线应具有标准差值的大小。
我可以找到误差线选项,但我看不到将(计算出的)标准差指定为幅度的方法。
给出的选项仅使用标准差跨数据透视表的值。
这是不是我想要的是。
但如果我进入高级选项:
我也只能找到一种方法来指定固定的自定义值。
虽然该字段似乎允许选择表格范围,但我只能选择具体的部分。即我可以在数据透视表中选择相应的值并得到我的图表:
误差线现在已经符合我的要求,但是数据透视表结构的任何变化(即添加新日期)都会失去连接:
我希望误差线始终使用同一行的计算值 - 可以做到吗?
(而且我也想隐藏橙色系列,但那是次要的。)
答案1
使用 VBA,我将创建一个事件每当数据透视图中的任何内容更新时,都会触发此事件。在这种情况下,我会编写代码来填写误差线的正确单元格引用。因此,每当数据透视图更新时,误差线引用也会更新。
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim rng As Range
Set rng = Me.PivotTables("PivotTable1").DataBodyRange.PivotField.DataRange.Offset(, 1)
With Me.ChartObjects("Chart 1").Chart.SeriesCollection(1)
.HasErrorBars = True
.ErrorBar Direction:=xlY, Include:=xlBoth, _
Type:=xlErrorBarTypeCustom, _
Amount:=rng, _
MinusValues:=rng
End With
End Sub
您可能需要将数据透视表名称"PivotTable1"
和图表名称更改"Chart 1"
为工作表中的实际名称。
该代码必须放在 VBA 编辑器中相应的工作表模块内,可以使用Alt+打开F11。