Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Range.Find en VBA

| Sin comentarios

Al momento de trabajar en Excel es necesario en muchas ocasiones buscar un tipo de dato específico que es relevante identificar. Para poder realizar este tipo de búsqueda de forma rápida se puede utilizar el código Find que se caracteriza por encontrar valores dentro de una base de datos. En este caso estudiaremos el find aplicado a un rango específico, no obstante, estas búsquedas también se pueden realizar a hojas completas o de otras formas empleando estructuras de control.

Sintaxis de Range.Find

 Los parámetros son:

Find(What,After,Lookin,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)

Donde:

What: se refiere al dato que se requiere encontrar, puede ser un texto a ser buscado por ejemplo.

After (Opcional): Ubicación desde donde comenzará la búsqueda, usualmente es la celda activa Activecell

Lookin (Opcional) :  Si se buscará dentro de valores o fórmulas, los posibles valores son xlComments, xlCommentsThreaded, xlFormulas, xlValues.

LookAt (Opcional): Si se buscará la coincidencia del texto de forma completa xlWhole, o parcial xlPart.

SearchOrder (Opcional): Si se necesita buscar por filas xlByRows, o columnas xlByColumns.

SearchDirection (Opcional): Si se requiere encontrar el dato posterior xlNext, o el anterior xlPrevious.

MatchCase (Opcional): Si se activa con verdadero true se buscará coincidencia exacta de mayúsculas y minúsculas. Si se obvia, no se tomará en cuenta (valor predeterminado), se usará false.

MatchByte (Opcional): Se utiliza para soportar de mejor manera el uso de caracteres doble byte. Si se activa los valores doble byte encajan con los caracteres doble byte. Si se obvia los caracteres de doble byte podrían considerarse y encajar con los de un byte.

SearchFormat (Opcional): Su uso es opcional.

 

Ejemplo de Range.Find

Si se trabaja con un rango específico la estructura que tendría la función podría ser la siguiente:

Range("A1:F10").Find("Marzo", ActiveCell, , , xlByRows).Select

En este caso, únicamente se trabajó con los primeros parámetros de Find. Este código lo que realiza es buscar la palabra hola dentro del rango A1:F10 a partir de la celda activa y que la búsqueda se realice fila por fila.

Ejemplo 1:

Se tiene una base de datos como la siguiente:

Range.Find en VBA

Utilizando la función find buscaremos cual trabajador o trabajadora ingreso en el mes de Marzo. Para ello se utilizó el siguiente código:

Código Range.Find en VBA

Finalmente se obtiene la dirección de la celda buscada

Mensaje Range.Find en VBA

Es importante evidenciar que en este caso solo se puede ubicar el primer valor. Esto quiere decir que si hubieran existido más trabajadores que ingresaron en Marzo estos no se habrían identificado. Para poder realizar una búsqueda múltiple se deberá utilizar el find.next que será detallado a continuación y con un ejemplo:

Findnext en VBA 

Este código permite continuar con la búsqueda ya iniciada con el find. Se utiliza para seguir encontrando más celdas que cumplan con los parámetros del find.

Sintaxis de FindNext

FindNext(after)

After (Opcional): Desde donde comenzará la búsqueda.

 

Ejemplo FindNext en VBA

En esta ocasión se realizará una búsqueda más detallada donde se encontrarán más de un objeto y se realizarán cambios de formato a las celdas. 

Range.Find en Excel

Para realizar está búsqueda más especializada se utilizó la siguiente macro:

Ejemplo Range.Find en Excel

Descarga el archivo completo con todas las macros empleadas: Range.Find en VBA

Por ejemplo, si buscamos el nombre Xavier:

Mensaje Range.Find en Excel

Como resultado final se marcarán todas las celdas que coincidan con el nombre indicado.  

El mismo procedimiento se puede realizar para los distintos nombres. 

 

 Realizado con el apoyo de: Piero Alonso Llamoja Nuñez 

Deja una respuesta

Los campos requeridos estan marcados con *.