Cómo contar el número de celdas por su color, en tu archivo de Excel [CR]

Consejos Rápidos

Tenemos un sinfín de situaciones en nuestros trabajos diarios, necesidades que surgen en nuestro negocio de la noche a la mañana y ya no sabes qué traerá el siguiente día. Incluso puedes encontrarte que, por alguna razón, es necesario poder contar el número de celdas por su color.

Imagina que tienes un archivo parecido al que te muestro en la imagen:

Cómo contar celdas por su color

Como ves, no siempre es posible simplemente usar un valor escrito directamente en la celda o en las de su alrededor. Entonces ¿Cómo hacerlo?

Contar el número de celdas por su color, en tres pasos.

Este es un consejo rápido, así que voy a mostrarte directamente cómo conseguir esta funcionalidad, usando macros, en tres pasos:

  1. Crea una nueva macro en tu libro de trabajo. Si no recuerdas cómo era, refresca tu memoria haciendo clic aquí.
  2. Ya que estés dentro del editor de VBA, inserta un nuevo módulo. Recuerda que es necesario tener organizado nuestro código desde el principio. Haz clic aquí si quieres ver cómo se hace.
  3. Una vez que ya tengas tu nuevo módulo, sólo copia y pega este código que te dejo a continuación:
    
    						Function ContarPorColor(rango_datos As range, condicion_color As range) As Long
    Dim datox As range
    Dim colorx As Long
    colorx = condicion_color.Interior.ColorIndex
    For Each datox In rango_datos
    If datox.Interior.ColorIndex = colorx Then
    ContarPorColor = ContarPorColor + 1
    End If
    Next datox
    End Function

Cómo contar celdas por su color

Cómo contar celdas por su color

¡Y ya está!

Ahora sólo debes cerrar el editor de VBA y regresar a tu archivo. Seguramente ya quieres probar tu flamante función y es eso lo que vamos a hacer ahora.

En la celda que tú quieras, escribe la función: ContarPorColor(C2:C10, C2)

Donde el rango C2:C10 es el que contiene las celdas donde quiero contar por color. Tú deberías poner el rango que necesitas contar.

Por otro lado, C2, es la celda que tiene el color que me interesa contar. Por ejemplo, en este caso yo quiero contar cuántas celdas rojas hay en mi rango C2:C10.

El resultado será el siguiente (en mi caso):

Cómo contar celdas por su color

Cómo contar celdas por su color

¿Quieres descargar el ejemplo terminado?

[sociallocker id=”5276″]Haz clic aquí para descargar el archivo.[/sociallocker]

Hemos terminado.

Y eso es todo, ahora simplemente debes usar la función ContarPorColor y pasarle los argumentos necesarios para que VBA haga el trabajo por ti. Verás cómo te ahorras horas de trabajo y dolores de cabeza con esta simple función.

¡Nos vemos!

Cómo marcar una celda con un clic, usando VBA.

Cómo marcar una celda con un clic, usando VBA.

Muchas veces extrañamos la forma de trabajar de otra aplicación, o quisiéramos darnos un pequeño capricho con Excel, para poder darle a nuestros usuarios esa comodidad que necesitan para realizar su trabajo diario.

Por ejemplo, una forma fácil de seleccionar un conjunto de celdas para realizar una operación sobre ellas, sería hacer clic sobre ellas mientras se van marcando (incluso sin necesidad de tener la tecla Control presionada)

Aunque la mayoría de las veces, la solución pasa por cosas tan sencillas como ésta, no necesariamente es tan obvio. Por eso, he querido traerte este resumen para mostrarte cómo marcar una celda con un clic, usando VBA.

¿Para qué yo querría algo así?

Cuando te cuento algo como esto, seguramente la primera pregunta que te haces es:

“¿Y yo para qué querría hacer esto?”

La intención en esta idea, es poder realizar una selección más cómoda de las celdas que de alguna manera quieres “activar”.

Lo que quiero decir, es que será una muy buena forma de facilitarle a tus usuarios el manejo de tu hoja de cálculo, especialmente si no son personas con mucho dominio de la herramienta.

Además, con ésto evitamos el uso de controles adicionales en tu hoja de cálculo, evitando tener que lidiar con un objeto adicional, que tal vez no sea necesario usar (o tal vez sí, depende de tu caso)

¿Una razón más? Sí. Para aprender más sobre las macros en Excel y saber cómo trabajan los eventos. Estos ejercicios son la mejor manera de ponerte en forma con las macros en Excel. Dicho esto… ¡Comencemos!

¿Cómo funciona?

Lo primero que haremos, será detectar el momento en que el usuario ha hecho clic sobre una de las celdas que nos interesan.

Para esto, aprovecharemos el evento Worksheet_SelectionChange, de la misma forma que hicimos con otro evento en el artículo anterior.

Una vez que hemos sido capaces de saber que se ha seleccionado la celda con el ratón o usando el teclado, el siguiente paso será verificar el estado de la la celda seleccionada.

Es decir, nos preguntamos: ¿La celda está “encendida” o está “apagada”?

Cuando tengamos la respuesta a esta pregunta, el siguiente paso será asignarle el estado correspondiente. Esto es, si está apagada, hay que encenderla, en caso contrario, hay que “apagarla”.

Claro y sencillo, vas directo al punto. Ahora, ¿cómo lo haremos con el código?

Sigue leyendo y te lo cuento.

Creando el código.

Primero, vamos a crear un pequeño listado que servirá de base para nuestro primer experimento. Algo así estará bien:

Texto Alt

Como acabo de decirte, primero debemos detectar que una de las celdas de interés ha sido seleccionada.

En nuestro caso, las celdas que nos interesa revisar, son las de la columna B, así, el rango que usaremos será

`B3:B20`

Al igual que hicimos en el artículo anterior, vamos a colocar nuestro código en un evento, pero en esta ocasión usaremos el evento:

`Worksheet_SelectionChange`

Cada vez que el usuario selecciona una nueva celda, este evento se activará y se ejecutará todo el código que se encuentre dentro de él.

Texto Alt

Ahora, como no nos interesa que se active en cualquier celda, vamos a poner una condición para discriminar a todas las celdas que no se encuentren en el rango B3:b20

Texto Alt

Una vez que ya tenemos controlada la situación del cuándo, ahora vamos a hacer la “pregunta”: ¿La celda está “encendida” o está “apagada”?

Para esto, podemos preguntar por su valor o por su color. En mi caso, voy a preguntar por su color, así:

Texto Alt

El código 255, 255, 0 representa al amarillo, si la celda está pintada de amarillo, entonces le quito el color (lo dejo en transparente), en caso contrario, la pinto de amarillo, de esta forma:

Texto Alt

En este mismo código, podrías también asignarle un valor a la celda que se enciende, para usarlo de acuerdo a tu conveniencia, usando un código como éste:

Texto Alt

El ejemplo trabajando.

Como puedes ver, nuestra aplicación funciona correctamente y realiza exactamente lo que queríamos. Ahora, nada más falta que le agreguemos alguna funcionalidad adicional, para personalizarlo según tus necesidades.

Texto Alt

Descarga el archivo terminado.

¿Te ha gustado el trabajo? Si te interesa descargar el archivo terminado, para comparar o para guiarte, solo sigue las instrucciones (es gratis).

[sociallocker id=”5276″]Pincha aquí para descargar el archivo.[/sociallocker]

Nota: En este ejemplo, no he realizado ninguna validación, por lo que no están considerados todos los posibles errores. Dependiendo de lo que necesites, deberás adecuarlo a tu realidad.

Conclusión

Con pequeños trucos como este, podemos diseñar aplicaciones en Excel que brinden facilidad al usuario, al momento de trabajar con ella, en lugar de convertirse en una pesadilla que desea evitar a toda costa.

Esto, nos permite crear soluciones reales a los problemas de nuestro negocio, sin recurrir a soluciones más costosas, todo está en la imaginación y dedicarle algo de tiempo para diseñar esa solución que estás necesitando.

¡Nos vemos!

Cómo detectar el cambio en una celda de Excel.

Cómo detectar el cambio en una celda.

Cuando trabajas en tus proyectos de Excel, muchas veces sueñas con reducir un poco ese tiempo que te gastas haciendo tareas repetitivas. ¿Verdad que sí?

No es que sean grandes cosas, solo te das cuenta que no tiene sentido estar haciendo la misma cosa, de la misma forma todos los días, cuando podrías usar ese tiempo “perdido” para hacer tu trabajo.

Y una de esas cosas que te gustaría hacer, es que tu aplicación pueda detectar el cambio en una celda de Excel.

Pero ¿cómo hacerlo?

¿Macros? ¡Ni idea!

Es sencillo, una vez que te cuentan cómo se hace. Sigue leyendo, porque aquí te muestro el código base, para detectar cuando el usuario realiza un cambio en cualquiera de las celdas de una hoja de cálculo.

El evento Worksheet_Change

Tranquilidad. Simplemente cada cosa tiene su nombre y cuando tienen nombres largos, parece más complicado de lo que realmente es.

El evento Worksheet_Change, simplemente es la forma de decir:

Cada vez que "Alguien" cambie algo en la hoja actual, sucederá lo que digo a continuación.

Para trabajar con este evento, sólo debes acceder al editor de VBA y dar doble clic sobre el nombre de la hoja donde vas a crear tu código.

Abriendo el editor de VBA

Si no recuerdas cómo ingresar al editor de VBA, lee esto y vuelve enseguida.

¿Todo listo? Bien. Sigamos.

Cómo detectar el cambio en una celda.

Una vez dentro del objeto hoja, se mostrará la ventana en blanco, tal como te explico en el artículo que acabas de leer. En las dos listas que te aparecen,deberás elegir las siguientes opciones:

  1. Worksheet, en la primera lista.
  2. Change, en la segunda lista.

Eligiendo el objeto y el evento en Excel VBA.

Al unirse estas dos palabras, forman el evento Worksheet_Change.

La primera lista, hace referencia al objeto sobre el cual debe suceder el evento, mientras que la segunda lista hace referencia al tipo de evento que se dará sobre dicho objeto.

¿Sencillo, verdad?

El argumento target : El secreto de la receta.

Por defecto, es decir, automáticamente, verás que se asigna un argumento o parámetro llamado “Target”.

Esto vendría a significar “Objetivo”. Es decir, cuál es la celda objetivo en el cambio que se está dando.

Dicho de otra forma, Excel reconoce automáticamente cuál es la celda que cambió y manda su referencia a través de este argumento.

¿Y cómo puedo “sacar” la dirección que tiene esa referencia?

Con la propiedad “Address”.

Trabajando con la propiedad Address

Esta propiedad contiene la dirección del rango contenido en el argumento “Target”. Así, para mostrar cuál es la referencia de la celda que cambió, puedes usar un cuadro de mensaje, así:

MsgBox "Alguien cambió lo que había en la celda: " & Target.Address

siguiendo todos los pasos, tu código debería quedar, más o menos así:

El código de prueba terminado.

Y en qué ocasiones esto me resultaría útil?

Bueno, vamos a utilizarlo en ejemplos reales más adelante; pero para que te hagas una idea, te mostraré una forma de evitar que alguien cambie sin querer un valor de una celda.

Por ejemplo, imagina que el porcentaje de comisiones de venta que manejas en tu archivo de control, es de un 12 % y lo colocas en una celda para realizar tus cálculos.

¿Qué pasaría si por error se altera ese dato?

¡Sí! Eso y mucho más.

Entonces, ¿cómo podría evitar que suceda?

Primero, debemos detectar que alguien cambió la celda. Para esto, usarás lo que acabas de aprender y “preguntarás” cuál es la dirección de la celda que cambió, así:

Preguntando si el usuario realizó un cambio en las celdas.

Entonces, si es verdad que alguien cambió la celda A1, lo que harás será asignarle el porcentaje correcto, así:

Volvemos a colocar el valor origina, como si no hubiera pasado nada.

De este modo, cualquiera que quiera cambiarle o que por error le cambie el valor de esta celda, verá cómo retoma el valor original y tus cálculos estarán siempre a salvo.

¡Muy útil! ¿No lo crees?

Ahora ve y pon en práctica lo aprendido. Incluso si ahora mismo no lo vas a necesitar, es la mejor forma de dejarlo “archivado” en tu memoria.

No dejes de compartir este artículo en Facebook o Twitter, usando los botones que encuentras junto al mismo.

¡Nos vemos!

Las Macros en Excel, paso a paso.

Las macros en Excel

Las Macros en Excel pueden automatizar muchas de las tareas que tú realizas en tu trabajo.

Ese reporte que puede tomarte dos horas o más para terminarlo manualmente, podrías terminarlo en cuestión de minutos con macros bien diseñadas.

Domina las Macros de Excel paso a paso.

Aquí iré colocando todos los artículos que traten sobre las Macros de Excel, para que te sea mucho más fácil explorar el material de este blog, de manera que puedas aprovecharlo como el más flexible de los cursos de Excel 🙂

Conociendo el mundo de las macros.

[catlist name=conociendo-el-mundo-de-las-macros orderby=title order=asc numberposts=20 post_status=”publish” tags=”macros” ]