Necesito copiar varias filas completas en otras hoja en excel vba usando macros

Soy muy nueva en el tema de vba macros necesito una ayudita.

Tengo una hoja1 con distintos datos rellenos

l

Quisiera que recorra toda la fila(A2:D2) y si hay una casilla rellena que lo copie en la hoja2 esto que lo repita hasta la fila 10000 en un bucle y si hay una fila blanca que no la pegue como es el caso de A6:D6.

1 respuesta

Respuesta
2

Pero no pusiste en dónde quieres pegar el dato.

Por ejemplo en la hoja1, en A2, tienes un 3, ¿ese 3 en cuál celda de la hoja 2 lo quieres?

Después en la hoja1, en B2, tienes un 4, ¿ese 4 en cuál celda de la hoja 2 lo quieres?

Podrías explicar ese par de ejemplos para terminar la macro.

sal u dos

Creo que quieres copiar todas las filas que tienen datos, una tras otra.

Prueba con la siguiente macro

Sub Copiar_Valores()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    '
    j = 2
    For i = 2 To h1.UsedRange.Rows(h1.UsedRange.Rows.Count).Row
        If WorksheetFunction.Count(h1.Rows(i)) > 0 Then
            h1.Rows(i).Copy h2.Rows(j)
            j = j + 1
        End If
    Next
    MsgBox "fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Tengo otro problema tu if es solo para números en algunas hay texto

quisiera que copiara las que están rellenas.

Al hilo de esta pregunta aprovecho para contarte que lo que quiero es que me lo haga para varias hojas y que la variable contador me valga para llevármela a otro libro

La función funciona muy bien muchas gracias

Si me puedes responder te lo agradezco

Macro actualizada

Sub Copiar_Valores()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    '
    j = 2
    For i = 2 To h1.UsedRange.Rows(h1.UsedRange.Rows.Count).Row
        If WorksheetFunction.CountA(h1.Rows(i)) > 0 Then
            h1.Rows(i).Copy h2.Rows(j)
            j = j + 1
        End If
    Next
    MsgBox "fin"
End Sub

sal u dos

¡Gracias!

Eso me funciona estupendamente y me ha ido muy bien con mi jefe pero ahora necesita que solo se compare si esta rellena la columna de la A a la G y no toda la fila.

Muchísimas gracias llevo muy poquito en esto y lo quieren para ya.

Va la actualización:

Sub Copiar_Valores()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    h2.Cells.Clear
    '
    j = 2
    For i = 2 To h1.UsedRange.Rows(h1.UsedRange.Rows.Count).Row
        If WorksheetFunction.CountA(h1.Range(h1.Cells(i, "A"), h1.Cells(i, "G"))) > 0 Then
            h1.Rows(i).Copy h2.Rows(j)
            j = j + 1
        End If
    Next
    MsgBox "fin"
End Sub

sal u dos

¡Gracias! Alguna sugerencia para que vaya más rápido

Agrega esta línea después de la línea que dice 'Por. Dante Amor

    Application.ScreenUpdating = False

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas