Lección 15: Buscar un valor en un rango de celdas (Find).

Escrito por Administrador

24 de agosto de 2021

En esta lección vas a aprender a buscar una variable, un determinado valor o una palabra en un rango de celdas. ¡Es muy fácil, vamos allá!

El comando que utilizaremos para ello es Find, y su sintaxis es la siguiente:

Set variable = Rango.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

  • what: el valor buscado.
  • after: celda después de la cual se iniciará la búsqueda. Si no se especifica se inicia en la esquina superior izquierda del rango.
  • LookIn: Para buscar dentro de fórmulas (xlFormulas), valores (xlValues) o notas (xlNotes).
  • LookAt: El valor xlPart devolverá una aparición del valor buscado cuando forme parte del valor de una celda; el valor xlWhole, en cambio, requerirá una coincidencia total.
  • SearchOrder: Para una búsqueda eficiente puedes indicar si se hace primero por filas (xlByRows) o por columnas (xlBycolumns).
  • SearchDirection: xlNext (anterior)o xlPrevious (siguiente).
  • MatchCase: Si es True la búsqueda distingue entre minúsculas y mayúsculas. El valor por defecto es False.
  • MatchByte: Solo se usa si se seleccionó o instaló la compatibilidad con idiomas de dos bytes.
  • SearchFormat: Para especificar coincidencias en formatos.

 

Vamos a ver algunos ejemplos:

Set Dato = Range("D:D").Find(codigo, LookIn:=xlValues, LookAt:=xlWhole)

Almacenamos en la variable Dato la dirección de la primera celda de la columna D que contenga todo el contenido (xlWhole) de la variable codigo.

Set Dato = Range("D1:D20").Find("ista", LookIn:=xlValues, LookAt:=xlPart)

Almacenamos en la variable Dato la dirección de la primera celda del rango D1-D20 cuyo contenido contenga (xlPart) la cadena de texto “ista”.

La mejor forma de entender el funcionamiento y las posibilidades que tiene esta función es con una serie de ejemplos prácticos que veremos a continuación.

Crea un nuevo libro, abre el editor VBA e inserta 4 módulos. Copia en ellos las siguientes macros.

Macro 1

Sub Leccion15_1()

'Macro que busca en la columna C la cadena de texto "Periodista"

Set dato = Range("C:C").Find("Periodista", LookIn:=xlValues, LookAt:=xlWhole)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row  

'Guardamos en la variable columna, el valor de la columna de Dato                                                                  

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                        

MsgBox "Fila: " & fila & " Columna: " & columna                                       

End Sub

Macro 2

Sub Leccion15_2()

'Macro que busca en la columna C la cadena de texto "ista" desde la celda C8 hacia abajo

Set dato = Range("C:C").Find("ista", LookIn:=xlValues, LookAt:=xlPart, after:=Cells(8, 3), searchdirection:=xlNext)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row         

'Guardamos en la variable columna, el valor de la columna de Dato                                                    

columna = dato.Column 

'Mostramos en una ventana de texto el valor de la fila y columna                                                       

MsgBox "Fila: " & fila & " Columna: " & columna                                       

End Sub

Macro 3

Sub Leccion15_3()

'Macro que busca en la columna C la cadena de texto "ista" desde la celda C8 hacia arriba

Set dato = Range("C:C").Find("ista", LookIn:=xlValues, LookAt:=xlPart, after:=Cells(8, 3), searchdirection:=xlPrevious)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row            

'Guardamos en la variable columna, el valor de la columna de Dato                                                    

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                        

MsgBox "Fila: " & fila & " Columna: " & columna                         

End Sub

Macro 4

Sub Leccion15_4()

'Macro que busca en el rango C2-C9 el valor de la variable profesión introducida en la celda C15

'Guardamos la profesion introducida en C15 en la variable profesion

profesion = Cells(15, "C").Value   

'Buscamos la profesion en el rango C2-C9                                                                                    

Set dato = Range("C2:C9").Find(profesion, LookIn:=xlValues, LookAt:=xlWhole)            

'Si dato esta en blanco porque no se ha encontrado en la lista, entonces

If dato Is Nothing Then      

'Mostramos ventana de texto indicando que no se ha encontrado                                                                  

MsgBox "Profesión no contemplada en la lista"      

'En caso de haberse hallado en la lista,                                            

Else                  

'Guardamos en la variable fila, el valor de la fila de Dato                                                                                    

fila = dato.Row     

'Guardamos en la variable columna, el valor de la columna de Dato                                                             

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                                  

MsgBox "Fila: " & fila & " Columna: " & columna                                                       

End If

End Sub

Ahora rellena la hoja de cálculo como aparece en la figura. Tendrás que insertar cuatro botones y asignarle las macros anteriores.

total-operaciones-matematicas-macros

En la primera macro, buscamos en la columna C, la dirección de la celda que contiene la palabra “periodista”. Como no indicamos nada, lo va a hacer en dirección de arriba hacia abajo y sin distinguir mayúsculas – minúsculas.

Se abrirá una ventana emergente que nos dirá la fila y la columna de esa celda.

total-operaciones-matematicas-macros

Las macros 2 y 3 hacen lo mismo, buscan la cadena de texto “ista” en la columna C, a partir de la celda C8.

Mientras la segunda macro lo hace en dirección hacia abajo, la tercera lo hace hacia arriba. Esto lo seleccionamos con los parámetros xlPrevious o xlNext de Searchdirection dentro del comando Find.

La segunda macro encontrará el valor “socorrista”, fila 9 columna 3.

total-operaciones-matematicas-macros

La tercera macro encuentra el valor “periodista”, fila 7 columna 3.

total-operaciones-matematicas-macros

La cuarta y última macro, busca en el rango C2-C9 el valor introducido por nosotros en la celda C15. Si no lo encuentra, nos saldrá un aviso de que no se encuentra en el listado.

total-operaciones-matematicas-macros

En este caso hemos introducido la palabra albañil en minúsculas. Como en el comando find no hemos obligado a que coincidan mayúsculas y minúsculas, localiza la palabra en la fila 2 columna 3.

Con esto llegamos al final de la decimoquinta lección. Espero que te esté gustando el curso y que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L14. La función msgbox en macros.

L16. Iteraciones con macros. La función FOR. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto