Comparar entre hoja 1 y hoja 2 los registro que no se encuentran y lo envíe a hoja3

Tengo un excel con dos hojas, en la hoja 1 se encuentran 120 registros y la hoja2 115, necesito que eso 5 registros me los envíe a otra hoja automáticamente. Saludos

1 Respuesta

Respuesta
1

Ya te envío la respuesta.

Estimado aca te envío la respuesta inserta un modulo copia el código, inserta un botón y asigna la macro la macro lo que hace es tomar un registro de la hoja1 buscarlo en la hoja2, si no lo encuentra lo agrega en la hoja3, adáptala con el nombre de tus hojas. Te aconsejo que visites www.programarexcel.blogspot.com ahí encontrarás distintos ejemplos que puedes descargar y aplicar a tus hojas de excel. Espero comentarios.

Sub BuscayCopia()
Application.ScreenUpdating = False
Dim fila, fila1, filat As Integer
Dim dato, c As String
fila = 2
fila1 = 2
filat = 2
While Sheets("ProdB").Cells(fila, 1) <> Empty
dato = Sheets("ProdA").Cells(fila, 1)
Set b = Sheets("ProdB").Range("A1:A1048576").Find(dato, LookIn:=xlValues, Lookat:=xlWhole)
If b Is Nothing Then
Sheets("ProdA").Select
Rows(fila).Select
Selection.Copy
Sheets("Inexistentes").Select
Cells(filat, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
filat = filat + 1
End If
fila = fila + 1
Wend
Application.ScreenUpdating = False
End Sub

Estimado no me funciona, la probé con distintos datos y no realiza ninguna acción.

Me fije y anda perfecto, la adaptaste a tu libro, es decir nombre de hojas, ¿fila de la cual empieza a buscar? Pásame el archivo si no puedes hacerla funcionar en www.programarexcel.blogspot.com de ahí podrás enviar el archivo.

te lo envíe por tu blog, saludos

Te envié a tu mail una variante, necesito que me digas cual es la columna que determina si que un dato no sea igual en la otra hoja, o todas las columnas tienen que coincidir para decir si un datos es igual al otro. Espero tus comentarios, pon como ejemplo que columna no esta en las dos hojas.

con tres columnas (Cuenta,Monto,vigente) con eso puedo determinar si una fila no se encuentra en la otra hoja, también puede ser con dos(Monto y vigente). Saludos y muchas gracias por tu pronta respuesta.

Te estoy viendo el archivo, con esos datos que me pasaste, es decir sobre cuales son las columnas que determinan si un dato es duplicado o no; se puede hacer con while, pero si tienes muchas filas se hace un poco lento, me fijo si te lo hago con find, ten paciencia, te lo paso lo más rápido posible.

Muchas gracias estimad, te pasaste espero tu respuesta. Gracias nuevamente.

Pon esté código enn vez del que tiene tu libro y funcionará, recuerda que en www.programarexcel.blogspot.com encontrarás ejemplos que puedes bajar y aplicar a lo que estás haciendo.

Sub BuscayCopia()
Application.ScreenUpdating = False
Dim fila, filat, uc1, uc2 As Integer
Dim d1, d2, d3, d4, d5, d6 As String
Dim b, con1, con2 As String
fila = 2
fila1 = 2
filat = 2
Sheets("depurados").Select
Range("a2:XFD1048576").Clear
uc1 = Sheets("hoy").Cells(1, Columns.Count).End(xlToLeft).Column
uc1 = uc1 + 1
uc2 = Sheets("d-1").Cells(1, Columns.Count).End(xlToLeft).Column
uc2 = uc2 + 1
While Sheets("hoy").Cells(fila, 1) <> Empty
d1 = Sheets("hoy").Cells(fila, 4).Text
d2 = Sheets("hoy").Cells(fila, 5).Text
d3 = Sheets("hoy").Cells(fila, 7).Text
con1 = d1 & d2 & d3
Sheets("hoy").Cells(fila, uc1) = con1
fila = fila + 1
Wend
fila = 2
While Sheets("d-1").Cells(fila, 1) <> Empty
d4 = Sheets("d-1").Cells(fila, 4).Text
d5 = Sheets("d-1").Cells(fila, 5).Text
d6 = Sheets("d-1").Cells(fila, 7).Text
con2 = d4 & d5 & d6
Sheets("d-1").Cells(fila, uc2) = con2
fila = fila + 1
Wend
fila = 2
While Sheets("hoy").Cells(fila, uc1) <> Empty
dato = Sheets("d-1").Cells(fila, uc2)
Set b = Sheets("hoy").Columns(uc1).Find(dato, LookIn:=xlValues, Lookat:=xlWhole)
If b Is Nothing Then
Sheets("d-1").Select
Rows(fila).Select
Selection.Copy
Sheets("depurados").Select
Cells(filat, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
filat = filat + 1
End If
fila = fila + 1
Wend
Sheets("depurados").Columns(5).Select
Selection.NumberFormat = "#,##0"
Sheets("hoy").Columns(uc1).Clear
Sheets("d-1").Columns(uc2).Clear
Sheets("depurados").Columns(uc2).Clear
Set b = Nothing
Application.ScreenUpdating = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas