Lección 15: Buscar un valor en una columna Excel (Find).

buscar-un-valor-en-una-columna-excel

Escrito por Administrador

11 de septiembre de 2021

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

En realidad, solo necesitamos saber cómo se utiliza la función Find y su sintaxis:

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.

 

A continuación, 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)

Así, lo que hacemos es almacenar 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, en los que vamos a buscar un valor en un rango o columna de Excel.

En primer lugar, crea un nuevo libro, abre el editor VBA e inserta 4 módulos. Después, copia en ellos las siguientes macros.

 

Macro 1. Buscar cadenas de texto en una columna.

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. Buscar cadenas de texto hacia abajo en una columna desde una celda determinada.

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. Buscar cadenas de texto hacia arriba en una columna desde una celda determinada.

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. Buscar el valor de una variable en un rango de celdas.

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

A continuación, rellena la hoja de cálculo como aparece en la figura. Para ello, tendrás que insertar cuatro botones y asignarle las macros anteriores.

Además, te dejo dos enlaces donde explico cómo configurar Microsoft Excel para el uso de macros y cómo asignar macros a botones.

total-operaciones-matematicas-macros

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

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

total-operaciones-matematicas-macros

Igualmente, las macros 2 y 3 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.

Como resultado, la segunda macro encontrará el valor “socorrista”, fila 9 columna 3.

total-operaciones-matematicas-macros

Así mismo, la tercera macro encuentra el valor “periodista”, fila 7 columna 3.

total-operaciones-matematicas-macros

Por último, la cuarta macro, busca en el rango C2-C9 el valor introducido por nosotros en la celda C15. Si no lo encuentra, aparecerá un aviso advirtiendo de que no se ha encontrado 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, en la que has aprendido a buscar un valor en un rango o columna de Excel usando la función Find.

Finalmente, desear que te esté gustando el curso y pedirte que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario. De hecho, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L14. La función msgbox en VBA.

L16. Función FOR en VBA. »

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