Llevaba tiempo queriendo escribir sobre este tema de los colores RGB en Excel, y no he encontrado mejor forma que haciéndolo sobre el Círculo Cromático de 12 colores (ni el más simple ni el más completo).
Si no te suena qué es esto, puedes leer algo más en Wikipedia
En este caso lo más importante es conocer la combinación RGB de esos doce colores...
Nuestra gama de colores está dividida en tres colores primarios:
amarillo = RGB 255-255-000
rojo = RGB 255-000-000
azul = RGB 000-000-255
Tres colores secundarios:
Naranja = rojo + amarillo= RGB 255-166-000
Violeta = rojo + azul = RGB 128-000-128
Verde = azul + amarillo = RGB 000-255-000
y seis terciarios:
Naranja amarillento = naranja + amarillo = RGB 255-198-000
Rojo anaranjado = rojo + naranja = RGB 255-090-004
Violeta rojizo = violeta + rojo = RGB 206-000-099
Azul violáceo = azul + violeta = RGB 132-008-255
Verde azulado = verde + azul = RGB 000-160-140
Amarilloso verdoso = verde + amarillo = RGB 222-255-000
Nuestro objetivo es construir un gráfico con los colores del tipo seleccionados en las celdas K1:K3.
Para ello añadimos tres 'casillas de verificación' vinculadas cada una de ellas a la celda que tiene debajo (en K1:K3).
A modo de ejemplo veamos la primera..
A partir del resultado obtenido en las celda vinculadas K1:K3 se rellenarán las fórmulas del campo 'Selección' en la tabla 'TblCromatica'.
La fórmula será un sencillo condicional para marcar rápidamente las filas con las que trabajar.
Para las filas de colores primarios añadimos:
=SI($K$1;"x";"")
Para las filas de colores secundarios:
=SI($K$2;"x";"")
Y para las filas de terciarios:
=SI($K$3;"x";"")
Estas 'equis' nos servirán posteriormente en la macro para saber qué colores trasladar al gráfico.
En el paso siguiente generamos un rango K10:N21 al que hemos asignado un nombre definido:
rngColores =colores!$K$10:$N$21
además en el rango O10:O21 hemos añadido la siguiente fórmula:
=SI(K10<>"";1/CONTARA($K$10:$K$21);"")
que permite asignar una parte igual en función de los colores trasladados o seleccionados en K1:K3.
Por otra parte sobre el rango discontinuo: K9:K21 + O9:O21 construimos un gráfico Circular con la leyenda a la derecha y sin título de gráfico, y al que he llamado 'chCirculoCromatico'.
Este gráfico es necesario que exista para el correcto funcionamiento de la macro siguiente...
Tenemos todo lo necesario:
1- controles del tipo 'casilla de verificación' (tres, uno por tipo: primario, secundario y terciario)
2- una tabla con la información de los colores y sus valores de color RGB (tabla 'TblCromatica')
3- un rango K9:O21 donde volcar datos desde la 'TblCromatica' y que
4- alimentará el gráfico circular llamado 'chCirculoCromatico'
Insertaremos el siguiente procedimiento en un módulo estándar, para luego asociar la macro a un botón:
Hemos finalizado. Podemos seleccionar en los controles la categoría de color a mostrar en nuestro círculo cromático...
Por ejemplo, solo primarios..
O Primarios y Secundarios..
O cualquier otra combinación posible...
Si no te suena qué es esto, puedes leer algo más en Wikipedia
En este caso lo más importante es conocer la combinación RGB de esos doce colores...
Nuestra gama de colores está dividida en tres colores primarios:
amarillo = RGB 255-255-000
rojo = RGB 255-000-000
azul = RGB 000-000-255
Tres colores secundarios:
Naranja = rojo + amarillo= RGB 255-166-000
Violeta = rojo + azul = RGB 128-000-128
Verde = azul + amarillo = RGB 000-255-000
y seis terciarios:
Naranja amarillento = naranja + amarillo = RGB 255-198-000
Rojo anaranjado = rojo + naranja = RGB 255-090-004
Violeta rojizo = violeta + rojo = RGB 206-000-099
Azul violáceo = azul + violeta = RGB 132-008-255
Verde azulado = verde + azul = RGB 000-160-140
Amarilloso verdoso = verde + amarillo = RGB 222-255-000
Nuestro objetivo es construir un gráfico con los colores del tipo seleccionados en las celdas K1:K3.
Para ello añadimos tres 'casillas de verificación' vinculadas cada una de ellas a la celda que tiene debajo (en K1:K3).
A modo de ejemplo veamos la primera..
A partir del resultado obtenido en las celda vinculadas K1:K3 se rellenarán las fórmulas del campo 'Selección' en la tabla 'TblCromatica'.
La fórmula será un sencillo condicional para marcar rápidamente las filas con las que trabajar.
Para las filas de colores primarios añadimos:
=SI($K$1;"x";"")
Para las filas de colores secundarios:
=SI($K$2;"x";"")
Y para las filas de terciarios:
=SI($K$3;"x";"")
Estas 'equis' nos servirán posteriormente en la macro para saber qué colores trasladar al gráfico.
En el paso siguiente generamos un rango K10:N21 al que hemos asignado un nombre definido:
rngColores =colores!$K$10:$N$21
además en el rango O10:O21 hemos añadido la siguiente fórmula:
=SI(K10<>"";1/CONTARA($K$10:$K$21);"")
que permite asignar una parte igual en función de los colores trasladados o seleccionados en K1:K3.
Por otra parte sobre el rango discontinuo: K9:K21 + O9:O21 construimos un gráfico Circular con la leyenda a la derecha y sin título de gráfico, y al que he llamado 'chCirculoCromatico'.
Este gráfico es necesario que exista para el correcto funcionamiento de la macro siguiente...
Tenemos todo lo necesario:
1- controles del tipo 'casilla de verificación' (tres, uno por tipo: primario, secundario y terciario)
2- una tabla con la información de los colores y sus valores de color RGB (tabla 'TblCromatica')
3- un rango K9:O21 donde volcar datos desde la 'TblCromatica' y que
4- alimentará el gráfico circular llamado 'chCirculoCromatico'
Insertaremos el siguiente procedimiento en un módulo estándar, para luego asociar la macro a un botón:
Sub CirculoCromatico() 'limpiamos datos anteriores Range("rngColores").ClearContents Dim rng_R As Range, rng_G As Range, rng_B As Range Set rng_R = Range("TblCromatica[Red]") Set rng_G = Range("TblCromatica[Green]") Set rng_B = Range("TblCromatica[Blue]") Dim rng_Color As Range Set rng_Color = Range("TblCromatica[Color]") 'TRasladamos nueva selección Dim color As String x = 0: y = 0 For Each celda In Range("TblCromatica[Selección]") y = y + 1 'recuperamos valores de la TblCromática color = rng_Color.Item(y).Value rojo = rng_R.Item(y).Value verde = rng_G.Item(y).Value azul = rng_B.Item(y).Value 'si el color está seleccionado If celda.Value = "x" Then 'llevamos datos al área del gráfico '1.descripción del color Range("K10").Offset(0 + x, 0).Value = color '2. valor de rojo Range("K10").Offset(0 + x, 1).Value = rojo '3. valor de verde Range("K10").Offset(0 + x, 2).Value = verde '4. valor de azul Range("K10").Offset(0 + x, 3).Value = azul x = x + 1 'y trasladamos el color al punto de la serie del gráfico 'ajustamos el color de cada partición del gráfico 'que YA está creado y se llama 'chCirculoCromatico' Set ChtObj = ActiveSheet.ChartObjects("chCirculoCromatico") With ChtObj Set ser = .Chart.SeriesCollection(1) 'punto.Format.Fill.ForeColor.RGB = RGB(255, 0, 0) 'llevamos el color al punto de la serie With ser.Points(x).Format.Fill .Visible = msoTrue .ForeColor.RGB = RGB(rojo, verde, azul) .Transparency = 0 .Solid End With End With End If Next celda 'liberamos memoria Set rng_R = Nothing Set rng_G = Nothing Set rng_B = Nothing Set rng_Color = Nothing Set ser = Nothing End Sub
Hemos finalizado. Podemos seleccionar en los controles la categoría de color a mostrar en nuestro círculo cromático...
Por ejemplo, solo primarios..
O Primarios y Secundarios..
O cualquier otra combinación posible...
Saludos desde Venezuela. Muchas gracias por compartir, interesante ejercicio aunque se me presenta una duda: ¿Cómo le asigno un nombre al gráfico circular? He buscado la forma, más no he dado con ella. De antemano, muchas gracias.
ResponderEliminarHola Justo,
Eliminarcomo a cualquier gráfico solo tienes que seleccionar el gráfico y en el Cuadro de nombre (a la izquierda de la barra de fórmula) introduces el nuevo nombre...
Saludos!