You are on page 1of 12

Contar celdas por color en Excel - Excel Total https://exceltotal.

com/contar-celdas-color-excel/

INICIO FUNCIONES ACERCA

1 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-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

2 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

3 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

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 Function CONTARCOLOR(celdaOrigen As Range, rango As Range)
2
3 Application.Volatile
4
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
13 CONTARCOLOR = CONTARCOLOR + 1
14 End If
15
16 Next celda
17
18 End Function

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.

4 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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:

5 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

Con estos pasos hemos creado y habilitado la nueva función que lleva por nombre CONTARCOLOR y cuyo uso
explicaré a continuación.

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.

6 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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)

7 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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)

8 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

9 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

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.

10 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

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

11 of 31 11/8/2017, 6:50 PM
Contar celdas por color en Excel - Excel Total https://exceltotal.com/contar-celdas-color-excel/

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.

Publicado por Moisés Ortíz.

12 of 31 11/8/2017, 6:50 PM