Copiar rango a otra hoja si cumple condición

Busco solución al dilema siguiente:

En caso de que E1<>E2, quiero copiar el rango (A1:X1) de la hoja1 a la hoja2 de forma ordenada, es decir, que si una fila no cumple la condición no me deje una fila en blanco en la hoja2.

Respuesta
1

H o l a:

Pero solamente hay que revisar esto:

"E1<>E2"

¿O son varias filas?

Puedes poner una imagen de lo que tienes en la hoja1 y de lo que esperas como resultado en la hoja2.

Procura que en las imágenes se vean las letras y los números de las filas de excel.

Hola Dante, gracias por tu atención.

Busco que en MyData (Hoja1) compare E2<>E3, si no cumple pase a E3<>E4, etc.

Y cuando se dé la condición, copie un grupo de casillas (AA2:M2 por ejemplo) de la misma línea superior de las 2 comparadas en Hoja2 consecutivamente y sin líneas en blanco, como se ve en la 2ª imagen.

Adjunto MyData(hoja1)

y Hoja2 (resultado buscado).

Un saludo.

 H o l a:

Te anexo la macro.

Sub CopiarRango()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Cells.Clear
    j = 1
    u = h1.Range("E" & Rows.Count).End(xlUp).Row
    For i = 2 To u
        If i + 1 <= u Then
            If h1.Cells(i, "E") <> h1.Cells(i + 1, "E") Then
                h1.Range(h1.Cells(i, "A"), h1.Cells(i, "M")).Copy h2.Cells(j, "A")
                j = j + 1
            End If
        End If
    Next
    MsgBox "fin"
End Sub

Hola Dante, funciona fantásticamente bien. Muchas gracias.

Para poder usar esta macro con otros libros me gustaría preguntarte:
• ¿Puedo hacer que antes de pegar el código solo borre las columnas donde se va a copiar el rango seleccionado en h2?
h2.Cells.Clear
• Si en vez de 1 rango desde A:M, quiero 2 mas pequeños A:C y E:H entiendo que debo modificar la línea:
h1.Range(h1.Cells(i, "A"), h1.Cells(i, "M")).Copy h2.Cells(j, "A")
por estas otras:
h1.Range(h1.Cells(i, "A"), h1.Cells(i, "C")).Copy h2.Cells(j, "A")
h1.Range(h1.Cells(i, "E"), h1.Cells(i, "H")).Copy h2.Cells(j, "A")
Pero no se como unirlas con and o si consideras es mejor repetir todo el proceso desde el if para la segunda línea.

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas