Leyendas diferentes en gráfico de dispersión Excel
Hola! Estoy necesitando incorporar leyendas en un gráfico de dispersión.
Tengo un listado de personas con dos variables y quiero que en el gráfico de la nube de puntos se pueda identificar a que persona corresponde cada punto.
Encontré la manera de hacerlo, pero implica que tengo que seleccionar cada serie y asignarle la etiqueta y los valores para POR y para Y. El problema es que en el listado tengo más de 200 nombres.
¿Hay manera de hacerlo automáticamente?
Saludos y gracias
Sabrix
Tengo un listado de personas con dos variables y quiero que en el gráfico de la nube de puntos se pueda identificar a que persona corresponde cada punto.
Encontré la manera de hacerlo, pero implica que tengo que seleccionar cada serie y asignarle la etiqueta y los valores para POR y para Y. El problema es que en el listado tengo más de 200 nombres.
¿Hay manera de hacerlo automáticamente?
Saludos y gracias
Sabrix
Respuesta de Enrique Bernal
1
1
Si pones agregar etiqueta de datos regularmente te coloca el valor que se está graficando, pero si además entras al formato de etiqueta de datos y en la parte de opciones de etiquetas Colocas valor Y, te deben salir los nombres, prueba y me avisas
Hola! Intenté, pero no es justamente lo que necesito, porque funciona en el caso de que agregue la columna de los nombres, pero me duplica los valores para cada nombre.
Te cuento un poco mejor, tengo una planilla con tres columnas: Nombre, Valor 1 y Valor 2. Cuando inserto el gráfico tomando las tres columnas, para el primer nombre me gráfica dos puntos, pero lo que yo necesito es que para cada nombre me grafique un solo punto con el valor 1 en el eje por y el valor 2 en el eje y, pero de la única manera que me gráfica de esta forma es seleccionando solo las columnas de los valores.
Entonces no me queda otra que editar las referencias una por una.
Lo que necesito saber es si esta edición una por una, se puede automatizar de alguna forma, porque si fueran dos o tres, no habría problema, el tema es que son más de 300 y el gráfico lo tengo que actualizar todos los meses.
Espero me puedas ayudar y gracias de antemano.
Sabrix
Te cuento un poco mejor, tengo una planilla con tres columnas: Nombre, Valor 1 y Valor 2. Cuando inserto el gráfico tomando las tres columnas, para el primer nombre me gráfica dos puntos, pero lo que yo necesito es que para cada nombre me grafique un solo punto con el valor 1 en el eje por y el valor 2 en el eje y, pero de la única manera que me gráfica de esta forma es seleccionando solo las columnas de los valores.
Entonces no me queda otra que editar las referencias una por una.
Lo que necesito saber es si esta edición una por una, se puede automatizar de alguna forma, porque si fueran dos o tres, no habría problema, el tema es que son más de 300 y el gráfico lo tengo que actualizar todos los meses.
Espero me puedas ayudar y gracias de antemano.
Sabrix
No sabría porque no te toma los valores directamente, pero esta macro hace lo que necesitas, revisa en que columna tienes los nombres para mi ejemplo es A, pero la puedes cambiar por la que tu necesites. Me avisas como te va
Sub Nombra()
A = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Name = c
Next kike
End Sub
Sub Nombra()
A = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Name = c
Next kike
End Sub
Hola! Gracias por tan rápida respuesta.
Me da error en una parte de la macro:
ActiveChart.SeriesCollection(d).Name = c
¿Tengo qué modificarle algo?
Saludos y gracias
Sabrix
Me da error en una parte de la macro:
ActiveChart.SeriesCollection(d).Name = c
¿Tengo qué modificarle algo?
Saludos y gracias
Sabrix
Puede ser por la versión de excel que tienes, en todo caso haz lo siguiente
Graba una macro modificando el nombre a una serie y pásame el código para verlo.
¿Adicional me podrías decir el número de error que te bota?
Graba una macro modificando el nombre a una serie y pásame el código para verlo.
¿Adicional me podrías decir el número de error que te bota?
Hola! La macro grabando los cambios manuales de a uno queda algo así:
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Select
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Points(3).Select
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Name = "='Hoja1'!$A$2"
ActiveChart.SeriesCollection(1).XValues = "='Hoja1'!$B$2"
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!$C$2"
End Sub
Y los errores que me tira la macro que me pasaste son los siguientes:
Si me posiciono en cualquier celda:
Se ha producido el error '91' en tiempo de ejecución:
Variable de objeto o bloque With no establecido
Si la ejecuto seleccionando el gráfico:
Se ha producido el error '1004' en tiempo de ejecución:
Parámetro no válido
Saludos y gracias!
Sabrix
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Select
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Points(3).Select
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.SeriesCollection(1).Name = "='Hoja1'!$A$2"
ActiveChart.SeriesCollection(1).XValues = "='Hoja1'!$B$2"
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!$C$2"
End Sub
Y los errores que me tira la macro que me pasaste son los siguientes:
Si me posiciono en cualquier celda:
Se ha producido el error '91' en tiempo de ejecución:
Variable de objeto o bloque With no establecido
Si la ejecuto seleccionando el gráfico:
Se ha producido el error '1004' en tiempo de ejecución:
Parámetro no válido
Saludos y gracias!
Sabrix
Te debes posicionar en el gráfico, y no estoy seguro pero prueba cambiando por este código
.Select
Sub Nombra()
a = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
b = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Points(3).Name = c
Next kike
End Sub
Prueba y me avisas, ¿te pregunto... Modificaste la primera serie de tu gráfico? ¿Tienes más de una linea en tu gráfico?
.Select
Sub Nombra()
a = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
b = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Points(3).Name = c
Next kike
End Sub
Prueba y me avisas, ¿te pregunto... Modificaste la primera serie de tu gráfico? ¿Tienes más de una linea en tu gráfico?
Si, el gráfico tiene más de 300 lineas. Te paso el código grabando 6 modificaciones:
Sub Macro5()
'
' Macro5 Macro
'
'
Range("B1:C7").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Hoja1'!$B$1:$C$7")
ActiveChart.ChartType = xlXYScatter
ActiveChart.SeriesCollection(1).Select
ActiveSheet.ChartObjects("4 Gráfico").Activate
ActiveChart.SeriesCollection(1).Points(3).Select
ActiveSheet.ChartObjects("4 Gráfico").Activate
ActiveChart.SeriesCollection(1).Name = "='Hoja1'!$A$2"
ActiveChart.SeriesCollection(1).XValues = "='Hoja1'!$B$2"
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!$C$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='Hoja1'!$A$3"
ActiveChart.SeriesCollection(2).XValues = "='Hoja1'!$B$3"
ActiveChart.SeriesCollection(2).Values = "='Hoja1'!$C$3"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Name = "='Hoja1'!$A$4"
ActiveChart.SeriesCollection(3).XValues = "='Hoja1'!$B$4"
ActiveChart.SeriesCollection(3).Values = "='Hoja1'!$C$4"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Name = "='Hoja1'!$A$5"
ActiveChart.SeriesCollection(4).XValues = "='Hoja1'!$B$5"
ActiveChart.SeriesCollection(4).Values = "='Hoja1'!$C$5"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Name = "='Hoja1'!$A$6"
ActiveChart.SeriesCollection(5).XValues = "='Hoja1'!$B$6"
ActiveChart.SeriesCollection(5).Values = "='Hoja1'!$C$6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).Name = "='Hoja1'!$A$7"
ActiveChart.SeriesCollection(6).XValues = "='Hoja1'!$B$7"
ActiveChart.SeriesCollection(6).Values = "='Hoja1'!$C$7"
End Sub
Con el código que me pasaste ahora, me tira otro error:
Se ha producido el error '438' en el tiempo de ejecución:
El objeto no admite esta propiedad o método.
Saludos
Sabrix
Sub Macro5()
'
' Macro5 Macro
'
'
Range("B1:C7").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Hoja1'!$B$1:$C$7")
ActiveChart.ChartType = xlXYScatter
ActiveChart.SeriesCollection(1).Select
ActiveSheet.ChartObjects("4 Gráfico").Activate
ActiveChart.SeriesCollection(1).Points(3).Select
ActiveSheet.ChartObjects("4 Gráfico").Activate
ActiveChart.SeriesCollection(1).Name = "='Hoja1'!$A$2"
ActiveChart.SeriesCollection(1).XValues = "='Hoja1'!$B$2"
ActiveChart.SeriesCollection(1).Values = "='Hoja1'!$C$2"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='Hoja1'!$A$3"
ActiveChart.SeriesCollection(2).XValues = "='Hoja1'!$B$3"
ActiveChart.SeriesCollection(2).Values = "='Hoja1'!$C$3"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).Name = "='Hoja1'!$A$4"
ActiveChart.SeriesCollection(3).XValues = "='Hoja1'!$B$4"
ActiveChart.SeriesCollection(3).Values = "='Hoja1'!$C$4"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Name = "='Hoja1'!$A$5"
ActiveChart.SeriesCollection(4).XValues = "='Hoja1'!$B$5"
ActiveChart.SeriesCollection(4).Values = "='Hoja1'!$C$5"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Name = "='Hoja1'!$A$6"
ActiveChart.SeriesCollection(5).XValues = "='Hoja1'!$B$6"
ActiveChart.SeriesCollection(5).Values = "='Hoja1'!$C$6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).Name = "='Hoja1'!$A$7"
ActiveChart.SeriesCollection(6).XValues = "='Hoja1'!$B$7"
ActiveChart.SeriesCollection(6).Values = "='Hoja1'!$C$7"
End Sub
Con el código que me pasaste ahora, me tira otro error:
Se ha producido el error '438' en el tiempo de ejecución:
El objeto no admite esta propiedad o método.
Saludos
Sabrix
Una cosa más, con la primer macro que me pasaste, aunque da error, me cambia la leyenda pero para todos los puntos es la misma, es el primer valor de la lista de nombres.
En la segunda macro, da error, pero no cambia nada.
Saludos,
Sabrix
En la segunda macro, da error, pero no cambia nada.
Saludos,
Sabrix
Sub Nombra()
A = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Name = c
b = b+1
Next kike
End Sub
Revise el ecodigo y funciona, lo que se me ocurre es que estas colocando más repeticiones de las que debe hacer la macro, es decir, en el primer punto colocas más valores a renombrar. Sobre el punto de que no cambia el nombre con estos código corrijo ese tema.
Prueba y me avisas.
A = InputBox("Ingrese el número de series a Nombrar", "Número de Series")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
For kike = 1 To a
c = Range("A" & b).Value
d = d + 1
ActiveChart.SeriesCollection(d).Name = c
b = b+1
Next kike
End Sub
Revise el ecodigo y funciona, lo que se me ocurre es que estas colocando más repeticiones de las que debe hacer la macro, es decir, en el primer punto colocas más valores a renombrar. Sobre el punto de que no cambia el nombre con estos código corrijo ese tema.
Prueba y me avisas.
No puedo hacerla funcionar.
Te paso mi mail: [email protected]
¿Me podrías pasar el archivo para ver como la prueba te funciona?
Gracias!
Sabrix
Te paso mi mail: [email protected]
¿Me podrías pasar el archivo para ver como la prueba te funciona?
Gracias!
Sabrix
Te propongo meste código para generar el gráfico desde 0, no debes tener ningún rango de datos seleccionado antes de correr el código, y debes estar situada en la hoja que contiene los datos, prueba y me avisas, yo ya lo probé en el archivo que me pasaste y funciona.
Sub grafico()
A = InputBox("Ingrese el número de filas a graficar", "Número de Datos")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
For kike = 1 To a
d = d + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(d).Name = "=Hoja1!$A" & b
ActiveChart.SeriesCollection(d).XValues = "=Hoja1!$B$" & b
ActiveChart.SeriesCollection(d).Values = "=Hoja1!$C$" & b
b = b + 1
Next kike
End Sub
Sub grafico()
A = InputBox("Ingrese el número de filas a graficar", "Número de Datos")
B = InputBox("Ingrese la Fila Inicial donde se encuentran los datos", "Celda Inicial")
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
For kike = 1 To a
d = d + 1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(d).Name = "=Hoja1!$A" & b
ActiveChart.SeriesCollection(d).XValues = "=Hoja1!$B$" & b
ActiveChart.SeriesCollection(d).Values = "=Hoja1!$C$" & b
b = b + 1
Next kike
End Sub
- Compartir respuesta
- Anónimo
ahora mismo