Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Coincidir los colores de una serie con los de las celdas de datos

| 8 comentarios

Cuando creamos gráficas (de barras, de líneas, de dispersión, circulares), estos contienen un formato preestablecido (diseño, colores, etc). Sin embargo, existe una herramienta que permite que los colores de las barras o líneas de las gráficas generadas coincidan con el color de las celdas en las que se encuentran los datos de entrada (estas tuvieron que ser seleccionadas previamente para la creación del gráfico). Esto permite dar una familiaridad y consistencia que facilita la comprensión de la data por parte de la audiencia o la persona encargada que analizará los gráficos, como se muestra a continuación:

fig6

Entonces, elaboraremos una macro que permita que los gráficos generados adopten el color de su rango de celdas origen. Cabe mencionar que esta macro funciona sólo después de seleccionar o hacer click en la gráfica. Es decir, primero se selecciona el rango de celdas que contienen los datos que deben contar ya con un formato de colores, luego se genera la gráfica de la manera usual en Excel usando la ficha Insertar/ Gráficos, y cuando ya esté generado, se hace click sobre ella y se corre la macro.

Nota: La macro captura los colores de fondo si éstos se formatearon de la manera usual con el Color de Relleno, no captura el color si éste fue introducido por medio del Formato Condicional o si fueron resultado de un formato preestablecido de Tablas.

fig4

Archivo que contiene la macro: macro colores

fig7

Además de las observaciones ya presentadas en la macro, notamos el uso de "On Error Resume Next", la cual especifica que cuando se produce un error en tiempo de ejecución, esta sea ignorada para seguir con la siguiente sentencia.

Por: Katherine Yahaira Quintero Garibay

 

8 comentarios

  1. Hola,

    No funciona, cambio los colores de la tabla manualmente y el gráfico se queda igual (he pinchado encima del gráfico).

    Estoy buscando algo parecido a esto, no sé si podrás ayudarme. Lo que busco es que en un gráfico dinámico de barras con una media, los colores por encima de la media sean verdes y los que son por debajo rojos. Esto pensaba que me iba a ayudar pero luego he leído que si el color de la tabla es introducido por formato condicional no funciona. Si tienes alguna solución te lo agradecería mucho 😉

    • Hola Sergio.

      Para que el cambio de colores pueda realizarse hay que seguir los pasos indicados:
      - Colocar los colores de fondo de celda necesarios
      - Seleccionar los datos con los que se generará el gráfico y crear el gráfico.
      - Luego seleccionar el grafico
      - Ejecutar la macro , el gráfico usará los colores de fondo empleados.

      • Sub CellCollorstochart()
        Dim ochart As Chart

        Dim MySeries As Series
        Dim SeriesCol As SeriesCollection

        Dim vntValues As Variant
        Dim s As String
        On Error Resume Next
        Set ochart = ActiveChart

        If ochart Is Nothing Then
        MsgBox "Seleccionar una grafica primero"
        Exit Sub
        End If
        Celda = 1

        For Each MySeries In ochart.SeriesCollection

        s = Split(MySeries.Formula, ",")(2)
        vntValues = MySeries.Values
        For i = 1 To UBound(vntValues)
        MySeries.Points(i).Interior.Color = Range(s).Cells(i).Interior.Color
        Next i

        Next
        End Sub

  2. Buenos días, tengo una duda; este archivo se puede usar con gráficos circulares? te lo pregunto porque lo intente y todo mi gráfico circular adopta el color de solo la primera columna o fila dependiendo de mi serie, mas no de los otros colores, pero en los gráficos tipo columna o barra funciona bien; o en todo caso me podrías decir que linea debería de modificar para que no pase esto ?, gracias de antemano.

    Saludos

    • Hola que tal, me pasa lo mismo con gráfica circular solo se modifica a blanco negro o el primer valor

  3. Hola, Tengo una duada..

    Como le puedo hacer parar desaparecer un punto o varios puntos de una serie. o como hacer que empiece a graficar desde cierto punto,

    Es decir, tengo un rango de datos que representa valores de enero a diciembre correspondiente para cada columna. si mediante codigo le asigon el rango para que empieze en febrero por decir algo, si lo grafica pero el primer valor seria el de febrero, pero lo que yo pretendo es que deje el espacio de enero en blanco y no como cero pues como es una grafica linear, la linea empesaria desde 0..

    Lo que hice es tomar todo el rango completo desde enereo y hacer transparentes los puntos que no quiero, en enero por ejemplo. y funciona, pero me encontre con el problema que cuando asigno color a los puntos y luego los quiero volver a ocultar, ya no me deja o por lo menos desde codigo no, tengo que hacerlo manualmente desde la pestaña diseño...

    Espero que alguien tenga una idea de como puedo solucionar esto y espero que me haya dado a entender..

    De antemano Gracias..

  4. Excelente!

  5. Hola, tengo una duda. Si una celda tiene un formato color determinado, y usamos un formulario VBA de Excel para editar los datos de la base datos de excel, ¿se podría activar una "Casilla" en el formulario si la celda editada tiene un formato color determinado"

Deja una respuesta

Los campos requeridos estan marcados con *.