Tengo una tabla de medidas, y cada punto de datos se mide varias veces.
Me gustaría crear un gráfico dinámico que muestre el valor promedio y use la desviación estándar del valor como barras de error.
Esto es lo que tengo hasta ahora:
- Mi DataTable tiene una columna de categoría (Fecha y hora) y una columna de valor.
- Tengo una tabla dinámica que me genera el valor promedio, y también me genera la desviación estándar.
- Actualmente, mi gráfico muestra el promedio y el stdDev como series de datos individuales.
Me gustaría tener la serie stdDev (naranja)noen el gráfico, pero tiene la serie promedio (azul) para mostrar barras de error. Estas barras de error deben tener el tamaño de los valores stdDev.
Puedo encontrar la opción de la barra de error, pero no veo una manera de asignar el StdDev (calculado) como magnitud.
Las opciones dadas, sólo utilizan la desviación estándar.a través de los valores de la tabla dinámica.
Esto esnolo que quiero.
Pero si voy a las opciones avanzadas:
También solo puedo encontrar un método para especificar unfijadovalor personalizado.
Si bien el campo parece permitir seleccionar un rango de tabla, solo puedo hacerlo para unespecíficosección. es decir, puedo seleccionar los valores correspondientes en la tabla dinámica y obtener mi gráfico:
Las barras de error ahora están como las quiero, pero cualquier cambio en la estructura de la tabla dinámica, es decir, agregar nuevas fechas, pierde la conexión:
Quiero que las barras de error utilicen siempre el valor calculado de la misma fila. ¿Se puede hacer esto?
(Y también quiero ocultar la serie naranja, pero eso es secundario).
Respuesta1
Usando VBA, crearía uneventoque se activa cada vez que se actualiza algo en el gráfico dinámico. En este caso, escribiría un código que complete las referencias de celda correctas para las barras de error. Entonces, cada vez que se actualiza el gráfico dinámico, las referencias de la barra de error también se actualizan.
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
Es posible que deba cambiar el nombre del pivote "PivotTable1"
y el nombre del gráfico "Chart 1"
por los nombres reales en su hoja.
Este código debe colocarse dentro del módulo de hoja correspondiente en el editor VBA, que se puede abrir con Alt+ F11.