Vba excel

Hola valedor, nuevamente, a lo mejor no me explique bien mira lo que pasa es que quiero comparar una base de datos de excel con otra igual pero con diferente numero de registros, como le hago para comparar una columna con otra, y después manipular el resultado, ya sea borrar, dar formato, copiar etc. Yo hice algo pero no funciona, se queda en el primer registro..
Sub Repetidos()
Sheets("hoja1").Select
Range("E2").Select
Posicion = 1
While ActiveCell.Value <> ""
valorcomparacion = ActiveCell.Value
Sheets("hoja2").Select
Range("a2").Select
Salir = "no"
While ActiveCell.Value <> "" And Salir = "no"
If ActiveCell.Value = valorcomparacion Then
respuesta = MsgBox("¿Deseas borrar esta entrada?", 4, "¡¡Encontrado!!")
If respuesta = vbYes Then
Selection.Delete Shift:=xlUp
End If
Salir = "si"
Else
ActiveCell.Offset(1, 0).Range("A1").Select
End If
Wend
Posicion = Posicion + 1
Range("E2").Select
ActiveCell.Offset(Posicion - 1, 0).Range("a2").Select
Wend
End Sub
Me puedes ayudar
gguerrero

1 respuesta

Respuesta
1
'Prueba este código, no te olvides de probarlo sobre datos que no te sirvan,
'como hay proceso de borrado que no es posible recuperar...
Option Explicit
Sub Repetidos()
'Procura siempre declarar tus variables
Dim co1 As Integer
Dim co2 As Integer
Dim Res As Integer
Dim NumDatosOrigen As Long
Dim Buscado As String
Hoja1.Select
Range("A1").Select
'Como cambiamos de hoja también cambia de celda activa, por eso
'gurdamos el valor antes
NumDatosOrigen = ActiveCell.CurrentRegion.Rows.Count
'Los ciclos For son más rápidos que el While - Wend ademas de que
'estos, ya no es común ni recomendable su uso
For co1 = 2 To NumDatosOrigen
Buscado = Trim(Cells(co1, 1).Value)
Hoja2.Select
Range("A1").Select
For co2 = 2 To ActiveCell.CurrentRegion.Rows.Count
If Buscado = Trim(Cells(co2, 1).Value) Then
Res = MsgBox("¿Deseas borrar esta entrada?" & vbCrLf & vbCrLf & _
Buscado, vbQuestion + vbYesNo, "¡¡Encontrado!!")
If Res = vbYes Then
'Borramos la fila entera !CUIDADO!
Cells(co2, 1).EntireRow.Delete
'************************************
'Variante uno, cuando solo se borra un registro y no se
'checa si hay más repetidos, solo quita el comentario
'a la siguiente linea y comenta la de la variante dos
'Exit For
'************************************
'Variante dos, si deseamos seguir buscando el valor, por
'si hay más entradas iguales, restamos uno para que no se
'salte la celda, recuerda que acabamos de borrar una fila
co2 = co2 - 1
End If
End If
Next co2
Hoja1.Select
Next co1
End Sub

Añade tu respuesta

Haz clic para o