FUNCIONES CONTAR Y SUMAR POR COLOR EN HOJ A DE EXCEL.
NOTA: PARA ABRIR VB (VISUAL BASIC) DEBO DAR ALT+F11
Operaciones con colores en Excel Excel no tiene ninguna funcin que nos permita conocer, ni establecer, el color de relleno de una celda y sin embargo es muy comn que necesitemos contar o sumar las celdas que tienen el mismo color de fondo. Ya que no podemos utilizar ninguna funcin existente ser necesario crear nuestra propia funcin (UDF) con cdigo VBA de manera que podamos realizar operaciones con colores en Excel. Pero antes de iniciar con el cdigo 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 informacin es almacenada en la propiedad Interior.Color y es posible crear nuestra propia funcin para obtener dicho valor. Considera el siguiente cdigo: 1 2 3 4 5 Function OBTENERCOLOR(celda As Range) As Long
OBTENERCOLOR = celda.Interior.Color
End Function Esta funcin 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 funcin:
Aunque este ha sido un ejemplo muy sencillo, la funcin 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 debern ser sumadas. El cdigo de nuestra funcin ser el siguiente: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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 funcin:
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 tenan los millones de colores que tenemos disponibles hoy en da. De hecho, Excel 2003 tena una paleta de 56 colores y dicho nmero se almacenaba en la propiedadInterior.ColorIndex que an est disponible pero que tiene la limitante de los 56 colores. Puedes consultar un ejemplo que utiliza la propiedad Interior.ColorIndex en el artculo Sumar por colores en Excel y vers que la funcin VBA propuesta en dicho artculo es muy similar a la funcin 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 funcin para sumar, ahora crearemos otra funcin que nos permita contar por el color de relleno de una celda. El cdigo ser muy similar al de la funcin anterior: 1 2 3 4 5 Function CONTARPORCOLOR(celdaColor As Range, rango As Range)
'Variable resultado almacena la cuenta total Dim resultado Dim celda As Range 6 7 8 9 10 11 12 13 14 15 16
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 funcin respecto a la anterior se encuentra en la lnea 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 funcin al contar las celdas que tienen el mismo color que la celda D1:
Evaluar el color de relleno Ya sabemos cmo sumar y contar por colores, pero si lo que necesitas es evaluar el color de relleno de una celda para tomar una decisin, entonces debemos utilizar la funcin SI haciendo una comparacin de los colores para saber si son iguales. Una alternativa es utilizar la primera funcin desarrollada en este artculo 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 decisin en caso de que los colores sean iguales o diferentes. Otra alternativa es utilizar una funcin que desarroll en un artculo 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 ms sobre esa funcin consulta el artculo Evaluar el color de fondo de una celda donde adems encontrars otros ejemplos como el de comparar el color de la fuente de una celda. De esta manera hemos aprendido cmo 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 artculo y reutilizar las funciones que hemos creado para seguir trabajando con colores en Excel.