Mover rangos de celdas y copiar

Necesito realizar las siguientes tareas

1) Intentar en forma automática en un rango inicial (ej: A1:S1)

2) Ejecutar Macro1 (son 3 procesos for----->next)

3) Copiar los resultados en la hoja 2

4) Intentar en forma automática en el rango siguiente (ej: A2:S2)

5) Ejecutar Macro 1

6)Copiar los resultados en la hoja 2 ( a continuación, sin pisar los datos anteriores)

7) Y así sucesivamente hasta el rango final (también definido por mi)

1 Respuesta

Respuesta
1

H o l a:

No me queda muy claro que hay que copiar y en dónde hay que pegar.

Tengo las siguientes dudas:

  1. Cuando dices: "Copiar los resultados en la hoja 2", te refieres a que se tienen que pegar como valores, ¿o a qué resultados te refieres?
  2. Quieres iniciar la copia desde la fila1, de la A a la S, y terminar en un fila que tú le indiques.
  3. Cuando dices "Ejecutar Macro1 (son 3 procesos for----->next)", ¿significa qué ya tienes hecha la macro1 y hay que ejecutarla?

Espero tus comentarios en ese orden.

O bien explícame todo lo que necesitas y te preparo la macro completa.

Ok, ahí te explico lo mejor posible:

Yo tengo la siguiente macro:

Sub Macro Ejemplo()
Dim CompareRange As Variant, x As Variant, y As Variant
For i = 2 To 50 (el rango 50 va a ir creciendo de a 1)
Rng = "B" & i & ":U" & i
Set CompareRange = Worksheets("Hoja1").Range(Rng)
For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(11 + i, 0) = x
Next
Next
Next i
End Sub

1) En esta macro no se posiciona en forma automática sino manual, yo necesito que se posicione en forma automática en la primer fila (B2:U2) siempre va a ser esta la primera.

2) Los datos que están en esta fila la macro los comparara con las filas (B3:U3) y así sucesivamente hasta la fila (B50:U50) buscando repetición y copia los repetidos.

3) Los repetidos esta macro los copia 11 filas para abajo, yo necesito que me los copie en la hoja 2.

4) Y ahí terminaría la primer comparación, con los repetidos copiados en la hoja 2

Hasta ahí vamos bien, ¿no?

Ahora la Macro tendría que empezar de nuevo el proceso pero debería posicionarme en la B3:U3 como inicio.

El tema es que cuando copie a la hoja 2 no pise los datos anteriores, ya que la macro compara: B2:U2 <------- B3:U3----->B50:U50 los tiene que copiar debajo de lo copiado anteriormente.

Una vez terminada la última comparación (B50:U50) estaría terminada la 2da fila, y así hasta la B50:U50 que compara todo hacia atrás, ya que no tiene filas adelante.

Creo que esta claro, pero cualquier duda preguntame

Dante, espero tu respuesta, no puedo resolverlo sin tu ayuda, Muchas Gracias!

Perdón, omití un solo detalle:

Cuando copia a la hoja 2 no tiene que copiar la fila que se esta comparando, esta macro copia los repetidos y la fila que se esta comparando esa fila no la tiene que copiar:

Ejemplo : Fila 2 : 2,4,6,8,10,12,14,16,18,20 ( Fila a comprar)

                  Fila 3: 2,3,4,5,6,7,8,9,10,11 (Fila comparada)

Debería copiar los números 2,4,6,10

Perdón, pero es un dato importante.

H o l a:

Para aclarar, debo entender que un duplicado es cuando, por ejemplo, comparo desde B2 hasta U2 contra B3 hasta U3, entonces si B2 = B3, C2 = C3, D2 = D3,... U2 = U3, si las celdas comparadas son iguales, ¿Entonces es un duplicado?

Eso la macro ya lo esta haciendo, es correcto lo que decís:

B2 C2 D2 E2 F2 G2 H2 I2 J2 K2 L2......

B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3.......

B2 compara con B3, luego con C3... etc

C2 compara con B3 luego con C3... etc

Si B2= 4 y C3 =4 el 4 es el  que hay que copiar.

Si C2=5 y H3 =5 el 5 es el que hay que copiar.

Los números a copiar en la hoja 2 en este caso serian el 4 y el 5

Lo que si acordate que se compara para adelante y para atrás:

B38:U38   <-----------------------B37:U37----------------->B36:U36

B39:U39   <-----------------------              ------------------>B35;U35

hasta la B50:U50  <----------               ------------------>hasta la B2:U2

Esto la macro también lo esta haciendo, por lo menos yo lo probé y lo hizo con 10 filas que compare.

Perdona. Sigo sin entender algo.

Ya entendí que si en la celda B2 = 4 tengo que buscar el 4 en las celdas B3 a U3. Si lo encuentro entonces lo copio, pero no entiendo en dónde lo tengo que pegar.

Envíame tu archivo y me explicas con 3 ejemplos lo que tienes, en la hoja2 me pones el resultado que esperas.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Diego Carlos Giufre” y el título de esta pregunta.

Ya te lo envie, avisame si aún tenes dudas creo que con esta explicación ya vas a poder armar la macro

Gracias.-

Ya recibí el correo, en la primera oportunidad lo reviso.

Ok, es eun excel, si lo podes abrir, listo, sino avisame y te lo envío en Word o otro formato

Te anexo la macro

Sub CompararDatos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    n = 0
    For i = 1 To 10
        For j = Columns("B").Column To Columns("U").Column
            Set r = h1.Range("B1:U10")
            Set b = r.Find(h1.Cells(i, j), lookat:=xlWhole)
            If Not b Is Nothing Then
                celda = b.Address
                Do
                    If b.Row <> i Then
                        h2.Cells(b.Row + n, j) = b.Value
                    End If
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> celda
            End If
        Next
        h2.Rows(i + n).Delete
        If wcol = 4 Then wcol = 6 Else wcol = 4
        h2.Range(h2.Cells(n + 1, "B"), h2.Cells(n + 9, "U")).Interior.ColorIndex = wcol
        n = n + 9
    Next
    MsgBox "Fin"
End Sub

¡Gracias! Dante, la pruebo y te comento

Dante, lisa y llanamente impresionante, pero tengo que molestarte 1 vez más para preguntarte que parámetros cambio en la Macro si la cantidad de filas aumenta, ya que en estos momentos estoy en B1:U50, que modifico para que funcione exactamente igual que con 10. Muchas Gracias, Dante!

Prueba con estos

For i = 1 To 50

'

Set r = h1.Range("B1:U50")

'

      h2.Range(h2.Cells(n + 1, "B"), h2.Cells(n + 49, "U")).Interior.ColorIndex = wcol
      n = n + 49

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas