Está en la página 1de 8

El color de relleno de una celda es ampliamente utilizado por los

usuarios de Excel ya que, al resaltarla con un color diferente,


podremos identificarla fcilmente en pantalla.

En ocasiones el color significar que el dato pertenece a alguna


categora especfica, o tal vez algn estatus o accin que debemos
tomar basados en dicho color. El asunto es que, cuando tenemos
varias celdas con un color de relleno, es casi inevitable que llegue el
momento en que necesitemos contarlas por color.

La mayora de los usuarios buscan de inmediato alguna funcin de


Excel que les ayude a contar por color, pero pronto se encuentran con
que no existe una funcin que haga dicha tarea.

Y es que, ninguna de las funciones de Excel puede acceder a la


informacin de formato de una celda. No existen funciones para saber
si la letra es negrita, o para conocer el tipo de fuente utilizada, as que
tampoco existe una funcin para conocer el color de la fuente o el
color de relleno de una celda.

Cuando me refiero a que no existen funciones de este tipo, me refiero


a las funciones provistas de manera predeterminada por Excel. Sin
embargo, es posible construir nuestra propia funcin que nos ayude a
contar las celdas por color.

Construir una nueva funcin no es cosa de novatos, pero tampoco es


una tarea de altsima complejidad, as que en esta ocasin te mostrar
los pasos necesarios para que puedas crear esa funcin que cuente
las celdas por color.

Descargar libro de trabajo

Lo primero que debes saber es que ser necesario utilizar


programacin VBA para crear la nueva funcin. Pero no te preocupes
si no sabes programar, ya que te mostrar cada una de las acciones a
tomar.

Cdigo VBA para contar por color


El cdigo VBA de la funcin ya lo he programado con anterioridad y lo
encuentras a continuacin, as que solo debers copiarlo y pegarlo en
el lugar adecuado.

1 Function CONTARCOLOR(celdaOrigen As Range, rango As Range)


2
3 Application.Volatile
4
5 'Variables
6 Dim celda As Range
7
'Recorremos todas las celdas del rango
8 For Each celda In rango
9
10 'Compara la propiedad Interior.Color
11 If celda.Interior.color = celdaOrigen.Interior.color Then
12 CONTARCOLOR = CONTARCOLOR + 1
13 End If
14
Next celda
15
16 End Function
17
18

Despus de copiar el cdigo debers abrir el Editor de Visual Basic, y


para eso tienes dos opciones:

Pulsar el atajo de teclado ALT + F11


Hacer clic en el botn Visual Basic de la pestaa Programador

Una vez que se abre la ventana del Editor de Visual Basic, debers
hacer clic en en el men Insertar > Mdulo.

Se insertar un nuevo mdulo de cdigo, que llevar un nombre


como Mdulo1, y en el panel de la derecha debers pegar el cdigo
de la funcin tal como lo muestra la siguiente imagen:
Con estos pasos hemos creado y habilitado la nueva funcin que lleva
por nombre CONTARCOLOR y cuyo uso explicar a continuacin.

Ejemplo para contar celdas por color


La funcin CONTARCOLOR tiene dos argumentos, el primero de ellos
es la referencia a una celda que tendr el color de relleno que
queremos contar y el segundo argumento es el rango con las celdas
que vamos a evaluar.

La siguiente imagen muestra las celdas del rango A1:A10 con


diferentes colores de relleno y la celda D1 que tiene el color azul el
cual nos interesa contar.
Para contar las celdas de color azul en el rango A1:A10, debo utilizar
la funcin CONTARCOLOR de la siguiente manera:

=CONTARCOLOR(D1, A1:A10)

El primer argumento es la celda que contiene el color que estamos


buscando y el segundo argumento es el rango de celdas. Ingresar la
frmula anterior en la celda D2 y al pulsar Entrar obtendremos el
siguiente resultado:
No es indispensable tener una celda diferente para especificar el color
que deseamos contar. He utilizado la celda D1 solo para ejemplificar el
uso de los dos argumentos, pero nada impide que utilicemos una
celda dentro del rango como el primer argumento. Considera la
siguiente frmula:

=CONTARCOLOR(A2, A1:A10)

En este caso, la celda A2 tiene el color azul que queremos contar, as


que podemos indicar dicha celda como el primer argumento de la
funcin y el resultado ser el mismo.
El uso de esta funcin es muy simple y solo debers asegurarte de
indicar en su primer argumento una celda que tenga el color que te
interesa contar. Recuerda que Excel tiene una gama de millones de
colores y por lo tanto debes tener mucho cuidado ya que podras ver
en pantalla colores muy parecidos cuando en realidad son distintos.

Consideraciones sobre la nueva funcin


Para terminar la explicacin de esta nueva funcin quiero mencionar
algunas consideraciones importantes que debers recordar en todo
momento:

El libro donde se encuentra la nueva funcin deber guardarse


como un Libro habilitado para macros o de lo contrario perders
la funcionalidad.
La funcin que acabamos de crear solo puede ser utilizada en el
libro de Excel donde has copiado el cdigo. Si quieres utilizar la
funcin en otro libro, entonces debers copiar de nuevo el
cdigo en dicho libro. Existen mtodos para hacer que una
funcin de este tipo est disponible en todos los libros del
equipo, pero eso ser un tema para otra publicacin.
Esta funcin solo trabajar adecuadamente en Excel 2007 y
versiones posteriores. Lamentablemente no funcionar en Excel
2003 o versiones anteriores y la explicacin detallada la
encontrars en la ltima seccin de este artculo.
El color que estamos evaluando es el color que se aplica a una
celda con el comando Color de relleno y no nos referimos al
color de formato condicional el cual requiere de un cdigo VBA
diferente y por lo tanto ser tratado en otra publicacin.

A continuacin, explicar con mayor detenimiento el cdigo de la


funcin para aquellos usuarios que estn interesados en el tema de la
programacin en Excel.

Explicacin del cdigo VBA de la funcin


He decidido incluir esta seccin para aquellos que estn un poco ms
familiarizados con la programacin en Excel y quieren leer una
explicacin ms detallada sobre el cdigo de la funcin UDF que
acabamos de crear.

En primer lugar, tenemos la declaracin de la funcin la cual acepta


dos argumentos, celdaOrigen y rango.

Function CONTARCOLOR(celdaOrigen As Range, rango As Range)

Ambos argumentos son del tipo Range ya que el primer argumentos


tendr una referencia a la celda que tiene el color que vamos a contar
y el segundo argumento ser la referencia al rango que ser evaluado.

La siguiente lnea de cdigo es una instruccin que se utiliza para


marcar una funcin como voltil, lo cual quiere decir que la funcin
ser recalculada cada vez que se efecta un clculo en la hoja.

Application.Volatile

Esta instruccin es muy conveniente ya que ocasiona que el resultado


de la funcin sea actualizado automticamente al momento de realizar
un cambio de color en las celdas. En la siguiente lnea tenemos la
declaracin de la variable celda que nos ayudar al momento de
recorrer el rango evaluado.

Utilizamos el bucle For Each para recorrer cada una de las celdas del
rango y puedes notar que la instruccin hace referencia a la
variable rango que es el segundo argumento de la funcin.
For Each celda In rango

Por ltimo, tenemos la instruccin ms importante de la funcin y es la


comparacin de los colores. El color de relleno est almacenado en la
propiedad Interior.color y por esa razn se hace la comparacin del
color de la celda original y el color de la celda del rango que estamos
evaluando.

If celda.Interior.color = celdaOrigen.Interior.color Then

Si los valores de las propiedades son iguales, quiere decir que los
colores son iguales y por lo tanto aumentamos el valor de
CONTARCOLOR en uno.

CONTARCOLOR = CONTARCOLOR + 1

De esa manera recorremos todas las celdas del rango y tendremos el


resultado final en CONTARCOLOR cuyo valor es devuelto
automticamente por la funcin por tener el mismo nombre.

La propiedad Interior.color
Antes de terminar la explicacin del cdigo VBA debo decir que la
propiedad Interior.color est disponible a partir de Excel 2007, as que
esta macro no funcionar para versiones anteriores.

A partir de Excel 2007 tenemos millones de colores disponibles para


elegir el color de relleno de una celda, pero eso no era posible
anteriormente. En Excel 2003 y versiones previas solo era posible
elegir entre una paleta de 56 colores y dicho color era almacenado en
la propiedad Interior.ColorIndex.

A partir de Excel 2007 se cre la propiedad Interior.color ya que era


imposible almacenar millones de colores en la
propiedad Interior.ColorIndex que se utilizaba anteriormente. Por esa
razn el cdigo de nuestra funcin no trabajar en Excel 2003 y
versiones anteriores a menos que cambies la propiedad utilizada.

Espero que esta funcin sea de mucha utilidad para esos casos en los
que necesites contar las celdas por color en Excel.