Excel no tiene ninguna función que nos permita conocer, ni establecer, el color de relleno de una celda y sin embargo es muy común que necesitemos contar o sumar las celdas que tienen el mismo color de fondo.
Ya que no podemos utilizar ninguna función existente será necesario crear nuestra propia función (UDF) con código VBA de manera que podamos realizar operaciones con colores en Excel. Pero antes de iniciar con el código hablaré un poco sobre la propiedad Interior.Color de una celda.
La propiedad Interior.Color
A partir de Excel 2007 tenemos millones de colores disponibles para elegir el color de relleno de una celda. Dicha información es almacenada en la propiedad Interior.Color y es posible crear nuestra propia función para obtener dicho valor. Considera el siguiente código:
Function OBTENERCOLOR(celda As Range) As Long OBTENERCOLOR = celda.Interior.Color End Function
Esta función devolverá el valor de la propiedad Interior.Color de la celda que hayamos especificado como argumento. En la siguiente imagen puedes observar el comportamiento de la función:
Aunque este ha sido un ejemplo muy sencillo, la función OBTENERCOLOR que acabamos de crear será de gran utilidad para comprobar que dos celdas tienen efectivamente el mismo valor para la propiedad Interior.Color ya que, al existir millones de colores, es posible ver en pantalla colores muy parecidos pero que en realidad tienen valores diferentes por lo que Excel los tratará como colores diferentes.
Sumar por el color de relleno
Para sumar por el color de relleno de una celda será necesario evaluar la propiedad Interior.Color y todas las celdas que tengan el mismo valor deberán ser sumadas. El código de nuestra función será el siguiente:
Function SUMARPORCOLOR(celdaColor As Range, rango As Range) 'Variable resultado almacena la suma total Dim resultado Dim celda As Range For Each celda In rango 'Compara la propiedad Interior.Color If celda.Interior.Color = celdaColor.Interior.Color Then resultado = resultado + celda.Value End If Next celda SUMARPORCOLOR = resultado End Function
Cada vez que encontramos una coincidencia en el valor de la propiedad Interior.Color la variable resultado hace la suma del valor de la celda y así obtenemos la suma total. Observa el comportamiento de esta función:
En este ejemplo sumamos las celdas que tienen el mismo color de la celda D1 y que son las celdas A3 y A5 por lo que obtenemos como resultado un 5 para la suma.
La propiedad Interior.ColorIndex
Como lo mencioné anteriormente, las versiones anteriores a Excel 2007 no tenían los millones de colores que tenemos disponibles hoy en día. De hecho, Excel 2003 tenía una paleta de 56 colores y dicho número se almacenaba en la propiedad Interior.ColorIndex que aún está disponible pero que tiene la limitante de los 56 colores.
Puedes consultar un ejemplo que utiliza la propiedad Interior.ColorIndex en el artículo Sumar por colores en Excel y verás que la función VBA propuesta en dicho artículo es muy similar a la función que acabamos de crear con la única diferencia de que se compara la propiedad Interior.ColorIndex en lugar de Interior.Color.
Contar por el color de relleno
Ya que hemos creado la función para sumar, ahora crearemos otra función que nos permita contar por el color de relleno de una celda. El código será muy similar al de la función anterior:
Function CONTARPORCOLOR(celdaColor As Range, rango As Range) 'Variable resultado almacena la cuenta total Dim resultado Dim celda As Range For Each celda In rango 'Compara la propiedad Interior.Color If celda.Interior.Color = celdaColor.Interior.Color Then resultado = resultado + 1 End If Next celda CONTARPORCOLOR = resultado End Function
El único cambio en esta función respecto a la anterior se encuentra en la línea 10 que en lugar de sumar el valor de la celda, simplemente suma el valor uno para llevar la cuenta de las celdas con el mismo color de relleno. En la siguiente imagen puedes observar el resultado de utilizar esta función al contar las celdas que tienen el mismo color que la celda D1:
Evaluar el color de relleno
Ya sabemos cómo sumar y contar por colores, pero si lo que necesitas es evaluar el color de relleno de una celda para tomar una decisión, entonces debemos utilizar la función SI haciendo una comparación de los colores para saber si son iguales. Una alternativa es utilizar la primera función desarrollada en este artículo de la siguiente manera:
Para cada celda de la columna A obtenemos el valor de la propiedad Interior.Color y lo comparamos con el valor de la segunda celda. De esta manera podemos tomar una decisión en caso de que los colores sean iguales o diferentes.
Otra alternativa es utilizar una función que desarrollé en un artículo anterior la cual permite comparar el color de relleno de una celda con los valores RGB de cualquier color y devolverá falso o verdadero para indicarnos si ambos colores son iguales. Para conocer más sobre esa función consulta el artículo Evaluar el color de fondo de una celda donde además encontrarás otros ejemplos como el de comparar el color de la fuente de una celda.
De esta manera hemos aprendido cómo hacer operaciones con colores en Excel en aquellos casos en los que necesitemos sumar, contar o evaluar los colores de relleno de las celdas. Puedes descargar el libro de trabajo utilizado en este artículo y reutilizar las funciones que hemos creado para seguir trabajando con colores en Excel.