Saltar al contenido

buscar diferencias entre dos columnas de diferentes libros


Recommended Posts

publicado

intento comparar la pagina1 columna (m) con la pagina2 columna  (c), el objetivo es enviar a la pagina3 el resultado de aquello que esta en la pagina1 pero no esta en la pagina2. estoy trabajando en este codigo pero no se si debo cambiar de codigo o solo puedo agregar algo mas que diga si encontraste la diferencia entre pagina 1 y pagina 2, devuelve el resultado en la pagina 3.

Private Sub ejemplo()
'Define Fields
    Dim iR As Double, oRw As Double
    Dim iRow_M As Double
    Dim s1 As Worksheet, s2 As Worksheet
    Dim s3 As Worksheet
    Set s1 = ThisWorkbook.Sheets("pagina1")
    Set s2 = ThisWorkbook.Sheets("pagina2")
    Set s3 = ThisWorkbook.Sheets("pagina3")

    iRow_M = s1.UsedRange.Rows.Count
    For iR = 1 To iRow_M
      
        If s1.Cells(iR, "m") <> s2.Cells(iR, "C") Then
           oRw = oRw + 1
           s3.Cells(oRw, 1).Value = s1.Cells(iR, "m") ' aqui solo muestra la columna M completa, por eso pido ayuda
           
        End If
    Next iR
   
End Sub

si alguien me puede decir como definir ese resultado lo agradeceria mucho.

 

 

 

 

publicado

Buenas, una solución

Cita

Private Sub ejemplo()
  Dim iR As Double, iRow_M As Double
  Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
   Set s1 = ThisWorkbook.Sheets("pagina1")
   Set s2 = ThisWorkbook.Sheets("pagina2")
   Set s3 = ThisWorkbook.Sheets("pagina3")

   iRow_M = s1.Range("M" & Rows.Count).End(xlUp).Row
   s3.Range("A1:A" & s3.Range("A" & Rows.Count).End(xlUp).Row).Clear
   Application.ScreenUpdating = False
   
    For iR = 1 To iRow_M
    Set c = s2.Range("c:c").Find(s1.Range("M" & iR), LookIn:=xlValues)
     If c Is Nothing Then
      If s3.Range("A1") = "" Then
       s3.Range("A1").Value = s1.Range("M" & iR)
      Else
       s3.Range("A1").Offset(s3.Range("A" & Rows.Count).End(xlUp).Row).Value = s1.Range("M" & iR)
      End If
     End If
    Next iR
    
   Application.ScreenUpdating = True
End Sub

saludos

 

publicado

También podría ser así:

Private Sub Cmprobar()
Dim i As Long, C As Range
Dim S1 As Worksheet, S2 As Worksheet
'--
Application.ScreenUpdating = False
Set S1 = Sheets("pagina1")
Set S2 = Sheets("pagina2")
'--
With Sheets("pagina3")
   .Cells.Clear
   For i = 1 To S1.Range("M" & Rows.Count).End(xlUp).Row
      Set C = S2.Columns("C").Find(S1.Range("M" & i), , , xlWhole)
      If C Is Nothing Then
         S1.Rows(i).Copy .Rows(.Range("M" & Rows.Count).End(xlUp).Row + 1)
      End If
   Next
End With
Application.ScreenUpdating = True
End Sub

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.