Hacer comando para actualizar gráficos excel
¿Cómo podría conseguir que a partir de una tabla de datos excel donde hay una columna con texto y otras con datos y creando un comando (botón) se actualizaran los gráficos excel?
1 respuesta
Respuesta de paramisolo
1
1
paramisolo, Desconozco temas financieros
Pues poniendo en el botón la ejecución de la macro, primero das valores en tu tabla y después pulsas el botón.
>Un saludo
>Julio
>Un saludo
>Julio
Pero ¿sabes hacer gráficos en excel?, es que necesitamos el rango de datos para pasarlos a la gráfica, ademas necesitamos el tipo de gráfico que quieres utilizar, tampoco es tan difícil, mira createla tú de esta forma, Abres un libro en blanco, ahora vas a utilizar la grabadora de macros, pinchas en Herramientas>Macros>Grabar nueva macro
le das un nombre por ejemplo Gráfico y a partir de ahora se genera la macro sola, tu vete poniendo datos donde quieras por ejemplo desde A1 hasta A4 pones valores y desde B1 hasta B4 pones texto, ahora insertas un gráfico y recoges los valores de esos rangos, cuando hayas terminado de generar el gráfico pinchas en Herramientas>Macros>Detener grabación.
Ya tienes tu macro grabada, pulsas Alt+F11 y veras todas las lineas de código, si borras de la hoja de excel todo lo que has echo y te vas a la macro y pulsas en la flecha de play(ejecutar de arriba de la barra de herramientas tu macro repetirá todo lo que tu hiciste ha mano.
Prueba y así aprenderás mucho sobre la programación en VBA
>Un saludo
>Julio
le das un nombre por ejemplo Gráfico y a partir de ahora se genera la macro sola, tu vete poniendo datos donde quieras por ejemplo desde A1 hasta A4 pones valores y desde B1 hasta B4 pones texto, ahora insertas un gráfico y recoges los valores de esos rangos, cuando hayas terminado de generar el gráfico pinchas en Herramientas>Macros>Detener grabación.
Ya tienes tu macro grabada, pulsas Alt+F11 y veras todas las lineas de código, si borras de la hoja de excel todo lo que has echo y te vas a la macro y pulsas en la flecha de play(ejecutar de arriba de la barra de herramientas tu macro repetirá todo lo que tu hiciste ha mano.
Prueba y así aprenderás mucho sobre la programación en VBA
>Un saludo
>Julio
Hola Julio, los gráficos ya están hechos. Exactamente tengo nueve gráficos excel de columnas y cada uno en una hoja excel. En cada gráfico se repite el texto de la columna B, donde hay año1, año2 y año3... Luego cada gráfico tiene los valores de su columna, así un gráfico tiene los valores de la columna C, otro de la columna DE,..., y así hasta la columna K. El rango sería las filas 9, 10 y 11, que serían 3 años..
La duda, a ver si me explico, como conseguir definir rango previamente con una macro, pero sin que aparezcan lineas vacías en el gráfico. Es decir, si yo añado un nuevo año, por ejemplo año4, que no me aparezca en el gráfico porque ya había una línea vacía.. no sé si me explico.., y así sucesivamente, para año5, año6...
Gracias de nuevo y por su tiempo
Jordi
La duda, a ver si me explico, como conseguir definir rango previamente con una macro, pero sin que aparezcan lineas vacías en el gráfico. Es decir, si yo añado un nuevo año, por ejemplo año4, que no me aparezca en el gráfico porque ya había una línea vacía.. no sé si me explico.., y así sucesivamente, para año5, año6...
Gracias de nuevo y por su tiempo
Jordi
Hola Julio, no hay forma de que lo consiga. Estos son los códigos que se han generado al crear la macro "grafico" para la primera gráfica. La duda es como consigo insertar, en la hoja1 (la misma hoja para todos los gráficos), los restantes gráficos, sin que se solapen, cosa que no he conseguido.
Otra duda es como consigo que los gráficos solo representen las celdas donde haya texto o datos, aunque el rango definido coja celdas vacías.
Gracias de nuevo
Sub grafico()
'
' Grafico Macro
' Macro grabada el 25/02/2009 por JSerra.
'
'
Sheets("Hoja1").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=RESUM!R9C2:R14C2"
ActiveChart.SeriesCollection(1).Values = "=RESUM!R9C3:R14C3"
ActiveChart.SeriesCollection(1).Name = "=RESUM!R8C3"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ferralla i residus de soldadura (200140)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ANY"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "KG"
End With
Charts.Add
ActiveChart.PlotArea.Select
ActiveChart.HasLegend = False
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlLinear, Forward:=0, _
Backward:=0, DisplayEquation:=False, DisplayRSquared:=False).Select
ActiveWindow.Visible = False
Windows("CONTROL RESIDUS_graficamacro.xls").Activate
Range("J32").Select
End Sub
Otra duda es como consigo que los gráficos solo representen las celdas donde haya texto o datos, aunque el rango definido coja celdas vacías.
Gracias de nuevo
Sub grafico()
'
' Grafico Macro
' Macro grabada el 25/02/2009 por JSerra.
'
'
Sheets("Hoja1").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=RESUM!R9C2:R14C2"
ActiveChart.SeriesCollection(1).Values = "=RESUM!R9C3:R14C3"
ActiveChart.SeriesCollection(1).Name = "=RESUM!R8C3"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ferralla i residus de soldadura (200140)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ANY"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "KG"
End With
Charts.Add
ActiveChart.PlotArea.Select
ActiveChart.HasLegend = False
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlLinear, Forward:=0, _
Backward:=0, DisplayEquation:=False, DisplayRSquared:=False).Select
ActiveWindow.Visible = False
Windows("CONTROL RESIDUS_graficamacro.xls").Activate
Range("J32").Select
End Sub
A la primera pregunta, vuelve a grabar la macro, cuando tengas el gráfico insertado tienes que colocarlo en tu hoja donde quieras que aparezca, lo rescalas y lo cambias de posición, ahora inserta el siguiente gráfico y al finalizarlo haces lo mismo, excel siempre insertará el gráfico en el mismo sitio en el centro de la hoja, por ello debes de cambiar la posición para que la macro también lo cambie de sitio, así con todos los gráficos para colocarlos de tamaño y lugar que tu elijas.
Respecto a la segunda pregunta, escoge las celdas que tengan datos y no un rango de celdas.
>Un saludo
>Julio
Respecto a la segunda pregunta, escoge las celdas que tengan datos y no un rango de celdas.
>Un saludo
>Julio
Hola Julio, creo que no estoy haciendo algo bien. Siguiendo los pasos que comentas cuando ejecuto la macro, me sale:
Se ha producido el error '-2147024809 (80070057) en tiempo de ejecución:
No se encontró el elemento con el nombre especificado
Jordi
Se ha producido el error '-2147024809 (80070057) en tiempo de ejecución:
No se encontró el elemento con el nombre especificado
Jordi
Cuando tengas la macro grabada, te recuerdo que debes de eliminar el gráfico y dejar los valores del rango, y entonces es cuando ejecutas la macro.
Hola Julio, no consigo ejecutar la macro!. Inserto solo dos gráficos en la hoja1 y luego los elimino. Cuando voy a ejecutar macro me dice "Se ha producido el error '1004' en tiempo de ejecución: Error en el método Select de la clase DataLabels.
Comentarte también que al ejecutar la macro solo inserta un gráfico en el medio y sale ventana con el error 1004 en tiempo de ejecución.
Cuando voy a depurar marca en amarillo la linea: ActiveChart.SeriesCollection(1).DataLabels. Select
Jordi
Comentarte también que al ejecutar la macro solo inserta un gráfico en el medio y sale ventana con el error 1004 en tiempo de ejecución.
Cuando voy a depurar marca en amarillo la linea: ActiveChart.SeriesCollection(1).DataLabels. Select
Jordi
[email protected]
Un saludo
Un saludo
Hola Julio, he vuelto a intentarlo y me sale al ejecutar macro, otra vez, error 1004 en tiempo de ejecución, exactamente, Error en el método Select de la clase Gridlines...
De todas formas no pierdo el optimismo para conseguirlo. Quedo a la espera de que me envíes el ejemplo que comentabas a mi privado.
Gracias de nuevo y un saludo
Jordi
De todas formas no pierdo el optimismo para conseguirlo. Quedo a la espera de que me envíes el ejemplo que comentabas a mi privado.
Gracias de nuevo y un saludo
Jordi
- Compartir respuesta
- Anónimo
ahora mismo