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:
Utilizando la función find buscaremos cual trabajador o trabajadora ingreso en el mes de Marzo. Para ello se utilizó el siguiente código:
Finalmente se obtiene la dirección de la celda buscada
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.
Para realizar está búsqueda más especializada se utilizó la siguiente macro:
Descarga el archivo completo con todas las macros empleadas: Range.Find en VBA
Por ejemplo, si buscamos el nombre Xavier:
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