Cómo buscar datos en Excel con el método Find (VBA)

Cómo buscar datos en Excel con el método Find (VBA)

Si necesitas localizar datos específicos en Excel, es posible utilizar el código Find, empleado para buscar valores dentro de bases de datos. En este artículo te explicamos cómo funciona esa práctica funcionalidad.

¿Cómo activar la función Find en Excel?

  1. Abre un documento Excel o libro (conteniendo datos).
  2. Pulsa Ctrl + F, atajo que en versiones de Excel anteriores a 2007 correspondería a Edición > Buscar Excel y en las posteriores a Excel 2007, sería Ficha Inicio >  Buscar y seleccionar > Buscar.
    Activar la función Find en Excel
    © Microsoft
  3. Escribe el valor por buscar, configura las opciones, luego haz clic en "Buscar siguiente".

¿Cuál es el código VBA correspondiente y la sintaxis que debes utilizar?

El registrador macro nos da el siguiente código (palabra buscada: "Valor"):

Cells.Find(What:="Valor", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

Sintaxis:

MyRange.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, SearchFormat)
  • MyRange: expresión que representa aquí el rango en el cuál deseas buscar el valor contenido en "What". Esto puede ser la hoja entera (Sheets(1).Cells.Find(...)), una columna (Sheets(1).Columns(3).Find(...)), una línea (Sheets(1).Rows(7).Find(....)) o un rango de celdas (Sheets(1).Range("D12:F56").Find(....)).
  • What: obligatorio. De tipo variante, se trata de lo que buscas en tu rango. "What" puede ser cualquier dato que Excel es capaz de tratar.
  • After: opcional. De tipo variante, indica la celda de inicio de la búsqueda. Atención esta celda debe ser única. Si "After" no es precisado, la búsqueda empieza en la esquina superior izquierda del rango.
  • LookIn: opcional. De tipo variante. Busca un valor en un rango, pero podemos especificar más en cuál es contenido (Valor: LookIn: = XlValues, Formule: LookIn: = XlFormulas).
  • LookAt: opcional. De tipo variante, indica si el valor encontrado debe ser rigurosamente igual al valor buscado o en parte solamente. Ejemplo, en la matriz: 6210, 4105, 540, 163, 154, 132, 10, buscas el valor 10. Para indicar a VBA que buscas exclusivamente 10, utilizarás LookAt: = XlWhole. En cambio, para indicarle que 6210 o 4105 te conviene (ambas contienen 10), utilizarás: LookAt: = XlPart.
  • SearchOrder: opcional. De tipo variante. La orden de búsqueda admite una de ambas constantes: xlByRows (por líneas) o xlByColumns (por columnas).
  • SearchDirection: opcional. De tipo variante. Indica el sentido de búsqueda durante la exploración de un rango. Ya sea xlNext, busca el valor siguiente en el margen o xlPrevious, busca el valor precedente.
  • MatchCase: opcional. De tipo variante. Dos valores para este argumento: por defecto False y para la búsqueda respectiva destinarle el valor True.
  • SearchFormat: opcional. De tipo variante. True o False según si afecta un formateado (monetario, estándar, número, bordes, relleno, alineación).

Nota: un argumento facultativo MatchByte de tipo variante, se usa si instalaste y utilizaste el control de las lenguas codificadas en dos octetos (False para que los caracteres codificados en dos octetos correspondan a sus equivalentes codificados en un octeto).

¿Cómo hacer una búsqueda múltiple?

El método FindNext y FindPrevious permiten repetir la búsqueda. Cuando la búsqueda llega al final del rango de búsqueda especificada, vuelve al principio del rango. Para detener una búsqueda cuando vuelve hasta el punto de partida, guarda la dirección de la primera celda encontrada, luego compara la dirección de cada celda encontrada con la dirección guardada.

¿Cómo funciona el método Find?

El método Find reenvía el objeto Range que representa la celda donde es encontrado el primer caso del valor buscado. Este método devuelve referencia null (Nothing en Visual Basic) si no se encuentra ninguna coincidencia. Esto es por consiguiente fuente de errores que deberás tratar. El método Find no afecta ni a la selección ni a la celda activa.

Debes saber que la configuración para LookIn, LookAt, SearchOrder y MatchByte se guarda cada vez que utilizas este método. Si no especificas ningún valor para estos argumentos durante la próxima búsqueda, los valores guardados serán utilizados. Al definir estos argumentos, se modifica la configuración en el cuadro de diálogo Buscar, lo que da por resultado cambiar la configuración guardada que son utilizados cuando no especificas los argumentos. Para evitar toda ambigüedad, define estos argumentos explícitamente cada vez que utilizas este método.

¿TIENES MÁS PREGUNTAS SOBRE Excel? ¡CONSULTA NUESTRO FORO DE DISCUSIÓN!

Excel