Post Destacado

¿Buscas trabajo y no has certificado en Excel? 🤔

Hoy quiero hablarte sobre un tema que puede cambiar tu vida profesional: la certificación oficial de Excel MO-200. Puede que te estés preguntando, ¿por qué debería importarme obtener esta certificación? Pues, sigue leyendo y descubrirás las ventajas que puede ofrecerte. ¿Qué es la Certificación MO-200? La certificación MO-200, también conocida como "Microsoft Office Specialist: Excel Associate (Excel and Excel 2019)", es una credencial oficial otorgada por Microsoft . Este examen valida tus habilidades en Excel, asegurando que eres capaz de manejar eficientemente una amplia gama de tareas dentro de esta poderosa herramienta. Básicamente, todo el mundo agrega en sus CV la frase " Dominio de Excel ", pero casi nadie se preocupa por demostrarlo oficialmente. Esta es tu oportunidad para ser el candidato preferido en tu próxima búsqueda. ¿Por Qué Deberías Considerarla? 1. Mejora tu Currículum:    Tener una certificación oficial en tu currículum te diferencia de otros can...

Búsquedas (más) Avanzadas en VBA con Find (Parte 2)

 


El día de hoy, quiero hablarte de nuevas formas en las que podemos parametrizar nuestras búsquedas en Excel utilizando la función Find, por lo que si no has leído nuestro artículo anterior al respecto, te recomiendo empezar por allí: Búsquedas Avanzadas en VBA con Find (Parte 1). El siguiente paso en nuestro camino, será hablar en mayor profundidad de los diferentes parámetros que podremos configurar las búsquedas, y cómo manejar aquellas situaciones en las que no logremos hallar una coincidencia.

Parámetros de Find:

What/Qué

El primer parámetro es el único obligatorio de la función, y con motivo: es el que establece qué se estará buscando. Debido a esto, puedes escoger si lo declaras explícitamente, ya que por defecto VBA entenderá que el primer parámetro que le entregues a la función será What.

Es decir, puedes escribir:

Set Encontrado = Range("A1:A7").Find(What:="Excel")

o bien:

Set Encontrado = Range("A1:A7").Find("Excel")

¡Las búsquedas con la función Find admiten comodines! Un comodín es un carácter especial que reemplaza a otros, como por ejemplo *.

Por ejemplo:

Set Encontrado = Range("A1:A7").Find(What:="Ex*")

permitirá hallar la coincidencia buscada, dado que el comodín * reemplaza la segunda parte de "Excel" (y también permitirá encontrar palabras como Excelente, dado que ambas empiezan con la raíz Ex.

After/Después de

Utilizamos este parámetro cuando queremos que la búsqueda inicie después de una determinada celda, o en otras palabras, que ignore las celdas anteriores a la que indiquemos como rango "después de".

Set Encontrado = Range("A1:A7").Find(What:="Excel", After:=Range("A3"))

Encontrará la celda A7:


Sin embargo, si la coincidencia no se encuentra luego de la celda especificada, entonces la búsqueda "dará la vuelta" para recorrer el rango desde el inicio.

Set Encontrado = Range("A1:A7").Find(What:="Excel", After:=Range("A4"))

Encontrará la celda A3:


Look In/Buscar en

Nos brinda la opción de buscar en valores, fórmulas, notas y comentarios. Los valores son los resultados que se muestran sobre una celda (ya sea porque hayan sido escritos de tal modo, o porque sean arrojados como resultado de una fórmula), mientras que "buscar en fórmulas" realizará la búsqueda dentro de la fórmula escrita, y no de su resultado. Un valor escrito directamente en la celda, es también considerado fórmula.

Por ejemplo, si deseamos hallar "Excel" en:

LookIn:=xlValues



LookIn:=xlFormulas



LookIn:=xlCommentsThreaded


LookIn:=xlNotes




LookAt/Coincidir con el contenido de toda la celda

Este parámetro tiene dos valores posibles: Lookat:=xlPart devolverá la coincidencia aún si solo coincide con parte de todo el contenido de la celda, mientras que para que Lookat:=xlWhole detecte la coincidencia, deberá producirse la coincidencia con el texto completo que contiene la celda.

SearchOrder /Buscar por filas o columnas

Indica si la búsqueda deberá realizarse primero recorriendo todas las filas (xlRows), o toda las columnas (xlColumns). Esto determinará qué resultado se hallará antes:

Set Encontrado = Range("A1:B7").Find(What:="Excel", SearchOrder:=xlRows)

Devolverá B3:


Mientras que:

Set Encontrado = Range("A1:B7").Find(What:="Excel", SearchOrder:=xlColumns)

Devolverá A7:


MatchCase/Coincidir mayúsculas y minúsculas

Si es verdadero (True), la coincidencia se producirá siempre y cuando coincida el valor buscado en sus mayúsculas y minúsculas, mientras que si es falso (False), no será necesario.

Set Encontrado = Range("A1:B7").Find(What:="Excel", MatchCase:=True)

No encontrará coincidencia en el siguiente rango:


¿Qué hacer si no encontramos la coincidencia?

Tal vez recuerdes del artículo anterior lo que ocurría si buscábamos un valor para el cual no existe coincidencia: la función Finde devolverá Nothing (nada), indicando precisamente que nada fue hallado. Esto es muy importante porque otras funciones de búsqueda en esta situación arrojarán un error, y esa es una situación tediosa de manejar en VBA. 

Sin embargo, en este caso, resultará sencillo: solo debemos verificar tras una búsqueda, si el valor resultado se cargó con "Nothing": si fuera el caso, significará que entonces la búsqueda no arrojó ningún resultado, y deberemos definir qué código ejecutar a continuación. De lo contrario, como es habitual, se cargará con el rango resultado de la búsqueda.

La elección de un camino u otro, podremos hacerla mediante un condicional If... Else:

Set Encontrado = Range("A1:B7").Find(What:="Excel")

If Encontrado Is Nothing Then
    MsgBox "No se encontró una coincidencia."
Else
    MsgBox "La ubicación de la coincidencia es: " & rgFound.Address
End If