Duda sobre algoritmo que recorre los datos de columnas comparándolos en Microsoft Excel

Hola que tal, mira mi problema es el siguiente estoy haciendo una comparación de dos columnas tal que antes de esto los datos que tengo como resultado solo son verdadero y falso, entonces me interesa saber como puedo hacer esto más rapido mediante un ciclo do que valla recorriendo las filas una por una y valla haciendo estas funciones que están el en el código agradeceré muchísimo tu ayuda, el código es el siguiente:
Sub comparar()
If Range("b2").Text = Range("c2").Text Then
Rows("2:2").Select
Selection.Copy
Sheets("Hoja2").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("Hoja1").Select
Else
Range("b2").Value = "No es esta tienda"
End If
End Sub
Entonces lo que necesito es que estoy lo haga fila por fila hasta la ultima celda que tenga texto agradeceré tu pronta respuesta gracias saludos...

1 Respuesta

Respuesta
1
Para repetir un código efectivamente hay que poner un DO... Loop, y para que vaya recorriendo filas debes de poner en variables lo que quieres que busque, sería algo así:
Sub comparar()
Dim dato As String 'Dos variables para recoger los datos
Dim celda As String
Sheets("Hoja1").Select 'Nos situamos en la Hoja1
dato = Range("C2"). Value 'Pasamos a una variable el valor de C2
Range("B2"). Select 'Nos situamos en la celda B2 en esta hoja para empezar en ella

Sheets("Hoja2"). Select 'Pasamos a la Hoja2 para situar el comienzo
Range("A2"). Select 'En esta hoja dejamos activa la celda A2
celda = ActiveCell.Address 'Recogemos en una variable la posicion de la celda
Sheets("Hoja1").Select 'Volvemos a la Hoja1 para comenzar
Do While ActiveCell.Value <> "" 'Mientras la celda activa no este vacía que haga
If ActiveCell.Value = ActiveCell.Offset(0, 1).Value Then 'selecciona todo el rango
'desde la celda activa hasta la ultima celda de la derecha con datos

Range(ActiveCell, ActiveCell.End(xlToRight)).Copy 'Copia lo seleccionado
ActiveCell.Offset(1, 0).Select 'Deja activa la celda de debajo
Sheets("Hoja2").Select 'Vamos a la Hoja2
Range(celda).Select 'Nos situamos en el rango marcado por la varible
ActiveCell.PasteSpecial 'Pegamos lo copiado
ActiveCell.Offset(1, 0).Select 'Dejamos activa la celda de debajo
celda = ActiveCell.Address 'Recogemos la posición en la variable para volver a ella
Else ' Si la celda no tiene el mismo valor que la contigua
ActiveCell.Value = "No es esta tienda" ' En la celda activa cambiamos el valor
ActiveCell.Offset(1, 0).Select ' Y dejamos activa la celda de debajo
End If 'Fin de la condicion
Hoja1.Select 'Nos situamos en la hoja1 para continuar
Loop 'Repetimos la acción hasta que este vacía la celda activa
End Sub 'Fin de la macro
He entendido que lo que quieres comparar en cada fila es la celda de la columna B con la celda de la columna C
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas