Esperemos que esta sea una tarea fácil. Tengo una serie de gráficos en MS Excel que apuntan a datos en la misma hoja de trabajo. Los datos en la hoja de cálculo se calculan utilizando una función VBA. Cuando la función VBA actualiza los datos, los nuevos números no se reflejan en los gráficos que los señalan. Intenté llamar a Application.Calculate, pero no funcionó. ¿Alguna idea?Los gráficos no se actualizan automáticamente cuando los cambios de datos
UDPATE:
que fue capaz de duplicar este número en una escala mucho más pequeña. Así es como:
- Cree un nuevo libro
- Cambiar el nombre de la hoja 1 a
abrir la hoja Resumen "Resumen"
- Cambiar el nombre de la hoja 2 de "Datos" en el editor de VBA y pegar el siguiente código :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Parent.Range("worksheetDate") = Target Then Application.CalculateFull End If End Sub
Crear un nuevo m VBA ódulo
Pegue el código siguiente en el nuevo módulo de VBA (Me disculpo - No puedo conseguir desbordamiento de pila para dar formato a esto correctamente para la vida de mí - esto es lo mejor que podía llegar a hacer):
.Function getWeekValue (weekNumber As Integer, valuesRange As Range) As Integer Dim aCell As Range Dim currentDate As Date Dim arrayIndex As Integer Dim weekValues(1 To 6) As Integer currentDate = ThisWorkbook.Names("worksheetDate").RefersToRange.Value arrayIndex = 1 For Each aCell In valuesRange If month(currentDate) = month(ThisWorkbook.Sheets("Data").Cells(_ aCell.Row - 1, aCell.Column)) Then weekValues(arrayIndex) = aCell.Value arrayIndex = arrayIndex + 1 End If Next getWeekValue = weekValues(weekNumber) End Function
.
Modificar la hoja de datos para que coincida con la siguiente imagen:
- Seleccione la celda B1 y el nombre de la gama "worksheetDate"
- filas duplicadas 1 a 3 en la siguiente imagen:
- En la fila 4, bajo los encabezamientos "Semana X", introduzca la siguiente fórmula
.
= getWeekValue(1, Data!$A$2:$M$2)
incrementando el primer argumento de la función getWeekValue en uno por cada semana (por ejemplo, pasar 1 para la Semana 1, 2 para la Semana 2, 3, para la Semana 3, etc.
- Crear una gráfico de barras usando las celdas A3 a E4 como los datos
- Cambie la fecha en la celda B2 a una fecha entre el 10/1/2010 y el 31/12/2010, eligiendo un mes distinto al mes que está actualmente en la celda. Por ejemplo, si la fecha es 12/11/2010, cámbiela a 11/11/2010 o 10/11/2010. Tenga en cuenta que tanto los datos como el gráfico se actualizan correctamente.
- Modifique la fecha en la ganancia de la celda B2. Tenga en cuenta que las actualizaciones de datos, pero el gráfico no.
Curiosamente, después de un período de tiempo (varios minutos), el cuadro finalmente se actualiza. No estoy seguro de si esto se debe a que he estado realizando otras actividades que desencadenaron la actualización o porque Excel está activando una actualización después de varios minutos.
son gráficos basados en rangos de datos simples o son gráficos dinámicos que se basan en (a) tablas dinámicas (que a su vez pueden basarse en los valores calculados de VBA). Los dos tipos de gráficos se comportan de manera diferente: para actualizar este último debe actualizar los Pivots en lugar de volver a calcular, y los PivotCharts se seguirán automáticamente – MikeD
@MikeD. Gracias por la información. Lo tendré en cuenta en el futuro. En este caso, estoy trabajando con un gráfico de barras que apunta a un dato que es un rango de datos simple que no está vinculado a una tabla dinámica. – Adam
¿Entonces fue capaz de resolver esto después de todo? Me di cuenta de que al insertar la primera fila en la hoja de trabajo, actualicé el gráfico –