Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Recorre fila buscando y comparando datos de dos columnas en hojas distintas

Buscar datos en una necesidad en toda base de datos, son bastantes las macros que se dedican a ello con todas las variantes posibles que dependen de cada proyecto en especial, básicamente lo que se hace es un bucle que recorra la fila inicial hasta la última fila con datos; me preguntan en un foro sobre como buscar datos en dos hojas diferentes y copiar los datos coincidentes en la primer hoja, la variante es que para que coincidan los datos, debe haber coincidencia de datos en dos columnas de la hoja1 con dos columnas de la hoja.

Como se dijo, el fin de  la macro es buscar datos coincidentes, para lleva a cabo este proceso, se concatena las dos columnas que brindan el criterio por el cual se debe buscar, de esta manera, se vuelca en una variable dicho dato; lo mismo se hace con los datos de la hoja en donde se deben buscar los datos, procediendo a echar manos a un bucle mediante While … Wend, una vez encontrados los datos, estos son expuestos en la columna A, dejando en blanco obviamente la fila con los datos que no se hayan encontrado en  la hoja dos.

Existen otros post relacionados con la búsqueda de datos, la diferencia es que en combobox incrustado en hoja de Excel, los datos a buscar son seleccionados mediante un combobox, en el post mencionado se explicaba en detalle como incrustar un combobox  en la hoja de Excel y seleccionar ítems desde el mismo, acá existe una variante echando manos a un userform, la Macro realizada en VBA ejecuta un procedimiento muy similar, con la variante que en vez de estar incrustado en la hoja de Excel, el combobox está en un formulario, a lo que se agrega que se puede seleccionar el archivo donde buscar los datos.
 

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Si buscas en el blog te encontrarás con varios procedimientos de VBA relacionados con la búsqueda de datos a través de Macros de Excel; el post buscar datos en tres columnas muestra como tratar y buscar los datos de tres columnas a comparar; si  quieres más ejemplos sobre como buscar datos  te aconsejo ver  el ejemplo de macro sobre como buscar datos en todas las filas  en base  a criterios, ingresando al menú mapsite de este sitio,  encontrarás un listado de todos los procedimientos que están disponibles para descargar y ver su funcionamiento o adaptar a lo que se requiera para llevar a cabo las macros de Excel que se estén realizando.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Las 1000 mejores macros de Excelbuscar en listbox mientras escribes en textbox, como copiar tablas vinculadas de Excel a Wordconectar Excel con Access y muchos ejemplos más.

Código que se debe ingresar en un módulo, desde el link podrás descargar el ejemplo

Sub BuscaDatosCoicidentes()
Application.ScreenUpdating = False
Dim fila, fila1, conta As String
Dim d1, d2, d3, d4 As String
Dim con1, con2 As String
fila = 2
fila1 = 2
conta = 0

Sheets(«Hoja1»).Select
While Sheets(«Hoja1»).Cells(fila, 2) <> Empty
d1 = Sheets(«Hoja1»).Cells(fila, 2).Value
d2 = Sheets(«Hoja1»).Cells(fila, 3).Value
con1 = d1 & d2
  
    While Sheets(«Hoja2»).Cells(fila1, 1) <> Empty And conta = 0
    d3 = Sheets(«Hoja2»).Cells(fila1, 1).Value
    d4 = Sheets(«Hoja2»).Cells(fila1, 2).Value
    con2 = d3 & d4
   
        If con1 = con2 Then
            Sheets(«Hoja1»).Cells(fila, 1) = Sheets(«Hoja2»).Cells(fila1, 1)
            conta = 1
        Else
        fila1 = fila1 + 1
        End If
   
    Wend
conta = 0
fila1 = 2
fila = fila + 1
Wend
Application.ScreenUpdating = False
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends