Quiere aprender a usar Función ENCONTRAR en VBA🇧🇷 ¡Entonces estás en el lugar correcto!
¿Quién no conoce la opción BUSCAR en Excel? Si ha estado trabajando con Excel durante algún tiempo, es probable que haya utilizado la función BUSCAR o la popular tecla de método abreviado Ctrl + L para ubicar una palabra o contenido que desea buscar en toda la hoja de trabajo. como todo el libro de trabajo.
Asimismo, en VBA tenemos una función llamada FIND que nos puede ayudar a encontrar el valor que buscamos.
Siga los detalles a continuación para obtener más información sobre esta función a través de ejemplos prácticos.
¿Cómo funciona la función FIND en VBA?
La función FIND de Excel VBA busca un valor específico dentro de un rango específico. Busca la primera aparición de ese valor y, si lo encuentra, la función devuelve la celda que lo contiene. Sin embargo, si no se encuentra una coincidencia, la función no devuelve nada. La función VBA FIND puede devolver una coincidencia exacta o parcial.
Por ejemplo, el siguiente código busca el texto «San Pablo» en el intervalo A1: A10 en «Hoja de trabajo1🇧🇷
With Sheets("Planilha1").Range("A1:A10") Set Rng = .Find(What:="São Paulo")
El propósito de usar la función FIND en VBA es encontrar el valor deseado en un conjunto de datos dado. Con un código VBA, puede automatizar la tarea de encontrar valores en Excel.
Sintaxis de la función VBA FIND
La sintaxis de la función VBA FIND se declara de la siguiente manera:
expresión.Find(Qué, Después, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Dónde:
expresión: es el objeto de rango, que precede a la función FIND en el código VBA. El rango de búsqueda puede ser una o más filas, columnas o la hoja de cálculo completa. La función VBA FIND acepta los siguientes argumentos:
- Qué: Este es el valor a buscar. Puede ser numérico, textual o cualquier otro tipo de datos de Excel. Este argumento es el mismo que la opción Buscar de la ventana «encontrar y reemplazar” de Excel.
- Después: Indica la celda desde la que se iniciará la búsqueda. Se ingresa como una sola referencia de celda. Si se omite este argumento, la búsqueda comienza después de la celda en la esquina superior izquierda del rango de búsqueda especificado.
- Pase a ver: Esta es la ubicación (o los datos) donde se debe buscar el valor. Puede ser un comentario (xlComments), una fórmula (xlFormulas) o un valor (xlValues). El valor predeterminado para este argumento es xlFormulas. Además, este argumento es el mismo que la opción Buscar de la ventana «encontrar y reemplazar” de Excel.
- Mirar: Este argumento decide si hacer coincidir todo el contenido de la celda (coincidencia exacta) o una parte del contenido de la celda (coincidencia parcial). Las constantes son xlWhole y xlPart para coincidencias exactas y parciales, respectivamente. El valor predeterminado para este argumento es xlPart.
- Orden de búsqueda: Este argumento sugiere el orden de búsqueda. Puede especificar si la búsqueda será en filas (xlByRows) o columnas (xlByColumns). El valor predeterminado para este argumento es xlByRows. Además, este argumento es el mismo que la opción Buscar de la ventana «encontrar y reemplazar” de Excel.
- Dirección de búsqueda: Indica la dirección en la que se realizará la búsqueda. Puede buscar hacia abajo o hacia la siguiente celda con la constante xlNext. Alternativamente, puede buscar hacia atrás (hacia arriba) o en la celda anterior con la constante xlPrevious. El valor predeterminado para este argumento es xlNext.
- Caso de coincidencia: Este argumento decide si la búsqueda debe distinguir entre mayúsculas y minúsculas o no. Si la búsqueda distingue entre mayúsculas y minúsculas, este argumento se especifica como verdadero (VERDADERO), de lo contrario, es falso (FALSO). El valor predeterminado para este argumento es Falso.
- MatchByte: Este argumento debe usarse si alguien ha instalado o seleccionado la compatibilidad con idiomas de doble byte. Debe especificarse como verdadero si los caracteres de doble byte deben coincidir con caracteres de doble byte. Debe especificarse como falso si los caracteres de doble byte deben coincidir con sus equivalentes de un solo byte.
- Formato de búsqueda: Indica si el valor a buscar debe estar en un formato específico (como negrita o cursiva) o no. Si el valor de búsqueda debe seguir una técnica de formato, este argumento se especifica como verdadero, de lo contrario, falso. El valor predeterminado de este argumento es falso (FALSO).
solo el argumento qué es necesario. Los otros argumentos son opcionales.
La función ENCONTRAR devuelve uno de los siguientes resultados:
- Si se encuentra una coincidencia, la función devuelve la primera celda donde se encuentra el valor.
- Si no se encuentra una coincidencia, la función no devuelve nada. Esto se debe a que el objeto de la función se establece en nada.
Alternativamente, si no se encuentra una coincidencia, un mensaje personalizado especificado a través del Función de cuadro de mensaje se puede devolver (consulte los ejemplos de código a continuación).
Nota 1: La búsqueda comienza después de la celda especificada en el argumento. Después y continúa hasta la última celda del rango de búsqueda. Si el valor no se encuentra hasta esta última celda, la búsqueda comienza de nuevo desde la primera celda del rango de búsqueda hasta la celda especificada en el argumento. Después🇧🇷
Por lo tanto, la celda especificada en el argumento Después se busca al final del proceso de búsqueda. Para más detalles sobre el uso del argumento Despuésvea el segundo ejemplo en este artículo.
Nota 2: Cada vez que se utiliza la función FIND de VBA, el pase a ver🇧🇷 Mirar🇧🇷 Orden de búsqueda y MatchByte se guardan Por lo tanto, si se omiten estos valores la próxima vez que se utilice la función, Excel utilizará los valores guardados anteriormente. Por lo tanto, se recomienda declarar explícitamente los argumentos proporcionados siempre que la búsqueda se realice mediante la función FIND de VBA.
¿Cómo usar la función ENCONTRAR en Excel VBA?
Para que pueda comprender el uso de la función FIND en VBA, hemos separado algunos ejemplos prácticos a continuación.
Ejemplo 1: Selección de la celda con la primera aparición del valor buscado
En este primer ejemplo, suponga que tiene una lista que contiene algunos nombres como se muestra en la imagen a continuación y desea buscar y seleccionar la celda que contiene el nombre. pedro🇧🇷
A partir de ahí, sigue estos pasos:
1. Accede a la guía Desarrollador 🇧🇷 básico visual🇧🇷 (Si no tiene habilitada la pestaña Desarrollador en su Excel, Chequea aquí el paso a paso).
dos. En la pantalla de VBA, seleccione la hoja de trabajo deseada del menú de la izquierda. En este ejemplo, seleccionaremos el Hoja de trabajo1 que es la hoja de trabajo que contiene la lista de nombres.
3. Después de seleccionar la hoja de trabajo deseada, en el área a la derecha, ingrese el código a continuación:
Sub LocalizarNome() Range("A1:A10").Find(What:="Pedro").Select End Sub
- Observe en el código anterior que mencionamos el rango que estamos buscando (A1:A10🇧🇷
- Después de mencionar el rango, coloque un punto (.) y escriba ENCONTRAR🇧🇷
- Nuestro primer argumento es lo que estamos buscando. Para resaltar el argumento, podemos pasar el argumento que:=esto será útil para identificar a qué parámetro nos referimos.
- La parte final es después de encontrar la palabra lo que queremos hacer. Necesitamos seleccionar la palabra, así que pase el argumento como .Seleccione🇧🇷
- Luego ejecuta este código usando la tecla F5 o manualmente como se muestra en la imagen a continuación para seleccionar la primera celda que contiene el nombre pedro🇧🇷
Ejemplo 2: Seleccionar la celda con la segunda ocurrencia del valor buscado
En este segundo ejemplo, tenga en cuenta que la siguiente imagen contiene algunos nombres en el rango A1:A10. Tenga en cuenta que el nombre «pedro” aparece dos veces en la columna A.
En este caso, queremos buscar y seleccionar el segunda ocurrencia del nombre “Peter” en la columna A (es decir, celda A7). Para ello utilizaremos el siguiente código:
Sub LocalizarNome() Range("A1:A10").Find(What:="Pedro", After:=Range("A2")).Select End Sub
Observe en el código anterior que la búsqueda comienza después de la celda A2 y continúa hasta la última celda de la columna A. Esto se debe a que el rango de búsqueda se especificó como columna A (A1:A10).
Así, como la búsqueda comienza en la celda A3, el valor “pedro” se encuentra en la celda A7 da «Hoja de cálculo2🇧🇷 Por lo tanto, la celda A7 será seleccionada por la función FIND al ejecutar el código.
Si el nombre «pedro” no se había encontrado en la celda A3 hasta la última celda de la columna A, la búsqueda comenzaría nuevamente en la celda A1 y terminaría en la celda A2 esta vez. Por lo tanto, la celda especificada en el argumento “Después” se busca justo al final del proceso de búsqueda.
Ejemplo 3: encontrar texto especificando algunos de sus caracteres
Para buscar texto especificando solo una parte del mismo, ingrese el argumento Mirar como xlParte u omitir este argumento. De forma predeterminada, la función FIND hace coincidir los caracteres del valor de búsqueda con la cadena completa. Luego devuelve la celda que contiene toda esta cadena.
Mira el ejemplo a continuación:
Sub LocalizarNome() Range("A1:A10").Find(What:="Ped", LookAt:=xlPart).Select End Sub
Este código busca los caracteres «Ped” en el rango A1:A25 de “Hoja3”. Se devuelve la celda que contiene el valor, que se denomina correspondencia parcial🇧🇷 Por lo tanto, independientemente de si los caracteres del valor de búsqueda se colocan al principio, en el medio o al final de la cadena, Excel VBA devuelve una coincidencia.
Observación: el constante xlParte se puede omitir del código porque es el valor predeterminado de la función FIND. Pero si se especifica este argumento, asegúrese de que no esté entre comillas dobles.
Ejemplo 4: Encontrar texto dentro de un comentario
También puede usar la función FIND de VBA para buscar texto dentro de un comentario de celda en Excel.
Para una mejor comprensión, mire el ejemplo a continuación donde tenemos una hoja de trabajo que contiene tres celdas con comentarios (indicados por los triángulos rojos). A partir de esto queremos encontrar el texto “Comision pagada” ubicado dentro de uno de los comentarios. En este caso, utilizaremos el siguiente código:
Sub LocalizarComentario() Range("A1:B10").Find(What:="Comissão Paga", LookIn:=xlComments).Select End Sub
Como resultado, Excel solo seleccionará la celda que contiene el comentario cuyo texto se especificó en nuestro código.
Ejemplo 5: Manejo de errores en la función FIND en VBA
En caso de que el texto que estamos buscando no se encuentre dentro del rango dado, VBA devolverá un error como se muestra a continuación:
Para evitar este error, podemos usar un código como se muestra a continuación:
Sub LocalizarNome() Dim Resultado As Variant On Error Resume Next Range("A1:A10").Find(What:="Cristina").Select On Error GoTo 0 Resultado = ActiveCell.Value If Resultado = "" Then MsgBox "O valor que você está procurando não está disponível no intervalo fornecido!" Exit Sub End If End Sub
Observe en el código anterior que si VBA encuentra el valor, mostrará el valor encontrado o, de lo contrario, mostrará el mensaje como «El valor que está buscando no está disponible en el rango dado🇧🇷
Para obtener más sugerencias sobre cómo solucionar errores de VBA, consulte el artículo: Errores de Excel VBA: ¡todo lo que necesita saber!
Detalles para recordar
- La función ENCONTRAR es parte de la propiedad RANGO y debe usar ENCONTRAR después de seleccionar solo el rango.
- En la función FIND, se requiere el primer argumento (qué), además todo lo demás es opcional.
- Si encuentra el valor después de una celda específica, puede mencionar la celda en el parámetro Después de la sintaxis de búsqueda.
Descargue la hoja de cálculo aquí que contiene los ejemplos presentados en este tutorial.
Consulte también los siguientes consejos de Excel:
Entonces, ¿qué piensas de la función FIND en VBA? Si tienes alguna duda, deja tu comentario a continuación. ¡Consulte también más consejos de Excel y VBA en nuestro sitio web!