Sie sind auf Seite 1von 8

Contar celdas por color

en Excel

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 fácilmente en pantalla.

En ocasiones el color significará que el dato pertenece a alguna


categoría específica, o tal vez algún estatus o acción 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 mayoría de los usuarios buscan de inmediato alguna función de


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

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


información 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 función 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 función que nos ayude a
contar las celdas por color.

Construir una nueva función no es cosa de novatos, pero tampoco es


una tarea de altísima complejidad, así que en esta ocasión te mostraré
los pasos necesarios para que puedas crear esa función que cuente
las celdas por color.

Descargar libro de trabajo

Lo primero que debes saber es que será necesario utilizar


programación VBA para crear la nueva función. Pero no te preocupes
si no sabes programar, ya que te mostraré cada una de las acciones a
tomar.

Código VBA para contar por color


El código VBA de la función ya lo he programado con anterioridad y lo
encuentras a continuación, así que solo deberás copiarlo y pegarlo en
el lugar adecuado.

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

Después de copiar el código deberás abrir el Editor de Visual Basic, y


para eso tienes dos opciones:

 Pulsar el atajo de teclado ALT + F11


 Hacer clic en el botón Visual Basic de la pestaña Programador
Una vez que se abre la ventana del Editor de Visual Basic, deberás
hacer clic en en el menú Insertar > Módulo.

Se insertará un nuevo módulo de código, que llevará un nombre


como Módulo1, y en el panel de la derecha deberás pegar el código
de la función tal como lo muestra la siguiente imagen:

Con estos pasos hemos creado y habilitado la nueva función que lleva
por nombre CONTARCOLOR y cuyo uso explicaré a continuación.
Ejemplo para contar celdas por color
La función 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 función 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
fórmula 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 fórmula:

=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
función y el resultado será el mismo.
El uso de esta función es muy simple y solo deberás 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 podrías ver
en pantalla colores muy parecidos cuando en realidad son distintos.

Consideraciones sobre la nueva función


Para terminar la explicación de esta nueva función quiero mencionar
algunas consideraciones importantes que deberás recordar en todo
momento:

 El libro donde se encuentra la nueva función deberá guardarse


como un Libro habilitado para macros o de lo contrario perderás
la funcionalidad.
 La función que acabamos de crear solo puede ser utilizada en el
libro de Excel donde has copiado el código. Si quieres utilizar la
función en otro libro, entonces deberás copiar de nuevo el
código en dicho libro. Existen métodos para hacer que una
función de este tipo esté disponible en todos los libros del
equipo, pero eso será un tema para otra publicación.
 Esta función solo trabajará adecuadamente en Excel 2007 y
versiones posteriores. Lamentablemente no funcionará en Excel
2003 o versiones anteriores y la explicación detallada la
encontrarás en la última sección de este artículo.
 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 código VBA
diferente y por lo tanto será tratado en otra publicación.

A continuación, explicaré con mayor detenimiento el código de la


función para aquellos usuarios que están interesados en el tema de la
programación en Excel.

Explicación del código VBA de la función


He decidido incluir esta sección para aquellos que están un poco más
familiarizados con la programación en Excel y quieren leer una
explicación más detallada sobre el código de la función UDF que
acabamos de crear.

En primer lugar, tenemos la declaración de la función 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 línea de código es una instrucción que se utiliza para


marcar una función como volátil, lo cual quiere decir que la función
será recalculada cada vez que se efectúa un cálculo en la hoja.

Application.Volatile

Esta instrucción es muy conveniente ya que ocasiona que el resultado


de la función sea actualizado automáticamente al momento de realizar
un cambio de color en las celdas. En la siguiente línea tenemos la
declaración 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 instrucción hace referencia a la
variable rango que es el segundo argumento de la función.
For Each celda In rango

Por último, tenemos la instrucción más importante de la función y es la


comparación de los colores. El color de relleno está almacenado en la
propiedad Interior.color y por esa razón se hace la comparación 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
automáticamente por la función por tener el mismo nombre.

La propiedad Interior.color
Antes de terminar la explicación del código 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
razón el código de nuestra función no trabajará en Excel 2003 y
versiones anteriores a menos que cambies la propiedad utilizada.

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

Das könnte Ihnen auch gefallen