Búsqueda de datos: el método Find (buscar)

Septiembre 2017


Introducción


El método Find, permite encontrar el primer caso de una información específica, en un rango. Con claridad, este método permite buscar en una hoja o una parte de una hoja Excel, una información, un dato o una parte de este dato.

El método por Excel


1. Abre un libro (conteniendo datos)
2. Ctrl + F, corresponde a:
Excel < 2007: Edición / Buscar
Excel >= 2007: Ficha Inicio / Buscar y seleccionar / Buscar


3. Escribir el valor a buscar, configurar las opciones, luego haz clic en "Buscar siguiente".

Código VBA correspondiente


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

La 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 utiliza 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).

Valor reenviado


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.

A saber


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.

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.

Saber más

Consulta también

Artículo original escrito por jak58. Traducido por Carlos-vialfa. Última actualización: 28 de junio de 2013 a las 09:19 por Carlos-vialfa.
El documento «Búsqueda de datos: el método Find (buscar)» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.