Búsqueda de datos similares en Excel.

Tengo dos libros de excel, ( MOD 1 y MOD 2 ) en cada uno, tengo tablas con información que necesito comparar para encontrar similitudes. En MOD 1, nos interesan las columnas " A, L y N ", en MOD 2, nos interesan " C, M y N ".

Se pretende encontrar cada dato de la columna C del libro MOD 2, en la columna A del libro MOD 1 y comparar los datos de M y N de MOD 2, sean también los mismos que L y N de MOD 1, en ese orden. De ser así, pasaría a la siguiente fila y así sucesivamente, de lo contrario, si alguno de los 3 datos fuese diferente, la fila se coloreara en color rojo.

Ejemp. C2 = A , M2 = L , N2 = N es correcto, pasa a la siguiente fila.

C3 = A, M3 = L, N3 (diferente) a N, colorear la fila en rojo y pasa a la siguiente

.

HAcer esto con todos los datos de la tabla.

Espero me haya explicado, y me puedan ayudar. Cualquier duda, o comentario, puedo enviar los archivos para trabajar en ellos.

Saludos.

1 respuesta

Respuesta
1

Estoy algo confundido, me puedes explicar lo siguiente:

Según la imagen, quieres buscar los datos A2, ¿M2 y N2 de MOD 1 en todos los registros del archivo MOD 2? Si es correcto entonces pon la siguiente macro en el archivo MOD 1.

Sub Comparar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Sheet1")
    Set l2 = Workbooks("Mod 2")
    Set h2 = l2.Sheets("Sheet1")
    '
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    uf = h1.Range("A" & Rows.Count).End(xlUp).Row
    If uf = 1 Then uf = 2
    h1.Range(h1.Cells(2, "A"), h1.Cells(uf, uc)).Interior.ColorIndex = xlNone
    '
    For i = 2 To uf
        existe = False
        Set r = h2.Columns("C")
        Set b = r.Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                If h2.Cells(b.Row, "M") = h1.Cells(i, "L") And _
                    h2.Cells(b.Row, "N") = h1.Cells(i, "N") Then
                    existe = True
                    Exit Do
                End If
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
        If existe = False Then
            h1.Range(h1.Cells(i, "A"), h1.Cells(i, uc)).Interior.ColorIndex = 3
        End If
    Next
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    1. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Comparar
  9. Aceptar.
  10. Para ejecutarla dale click a la imagen.

Al contrario, de MOD2 de las columnas C, M y N quiero buscar todos los datos de esas columnas en MOD1, pero, cada fila debe coincidir en ambos libros. Por ejemplo C2, M2 y N2 Deben encontrarse en el libro MOD1 dentro de una misma fila, aunque sea diferente numero de fila.

En la siguiente imagen maestro los datos que coinciden, si uno de estos datos no llegara a coincidir, entonces la fila se colorea en rojo. Si son los mismos datos en ambas tablas, sigue con la siguiente fila y así hasta terminar.

No se aprecia en la imagen pero no son las mismas filas, por eso la búsqueda, en MOD2 la fila que contiene la información es la 861 y en MOD1 es la 332.

Espero haber aclarado un poco más tus dudas, de cualquier forma, agradezco tu tiempo y trabajo invertidos en mi.

Saludos y quedo pendiente.

Sigo sin entender.

La primera parte ya la entendí, cuáles columnas de un libro van con las otras del otro libro.

Yo explico y tú me contestas verdadero o falso o de forma breve.

1. Tomo el registro 2 del libro MOD2, ¿correcto?

2. Busco el registro 2 en el libro MOD1, en todos sus registros, ¿correcto?

3. Si no lo encuentro, coloreo de rojo el registro 2 de MOD 2, ¿correcto?

O mejor envíame tu archivo y me explicas con un ejemplo cuál es el que pinto de rojo.

Prueba con la siguiente macro.

La macro toma un registro de MOD2 y lo busca en MOD1, si no lo encuentra entonces pinta de rojo el registro de MOD2.

Pon la macro en el libro MOD2, ejecuta la macro desde el libro MOD2.

Tienes que tener abierto el libro MOD1.

Sub Comparar()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Sheet1")
    Set l2 = Workbooks("Mod 1")
    Set h2 = l2.Sheets("Sheet1")
    '
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    uf = h1.Range("A" & Rows.Count).End(xlUp).Row
    If uf = 1 Then uf = 2
    h1.Range(h1.Cells(2, "A"), h1.Cells(uf, uc)).Interior.ColorIndex = xlNone
    '
    For i = 2 To uf
        existe = False
        Set r = h2.Columns("A")
        Set b = r.Find(h1.Cells(i, "C"), lookat:=xlWhole)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                If h2.Cells(b.Row, "L") = h1.Cells(i, "M") And _
                   h2.Cells(b.Row, "N") = h1.Cells(i, "N") Then
                    existe = True
                    Exit Do
                End If
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
        End If
        If existe = False Then
            h1.Range(h1.Cells(i, "A"), h1.Cells(i, uc)).Interior.ColorIndex = 3
        End If
    Next
End Sub

Esta línea tiene que tener el nombre de tu hoja

Set h2 = l2.Sheets("Sheet")

No olvides valorar la respuesta

Dante nuevamente muchas gracias por tu apoyo, la macro funciona y esta al 100, agradezco mucho tu tiempo y esfuerzo. Como siempre.

¡Gracias! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas