Macro para copiar filas a otra pestaña si cumple condición

Este tema ya ha aparecido, soy novato pero he intentado formular la macro en base a otros ejemplos que he consultado por aquí, pero en todos los casos me da error (compilación de listas) o no se copia; y no sé cómo solucionarlo; Os agradezco ayuda de revisión:

Esta es la macro:

Sub copiar()
    'establecer las hojas a utilizar
    Set h1 = Sheets("INTRODUCIR GASTOS")
    Set h2 = Sheets("GASTOS DELEGACION")
    '
    'revisar con un ciclo la hoja1 desde la fila 3 hasta el final de los datos
    For i = 3 To h1.Range("B" & Rows.Count).End(xlUp).Row
        '
        'Si en la hoja 1 en la columna B dice "Gastos de delegación"
        If h1.Cells(i, "B") = "Gastos de delegación" Then
            '
            'copia toda la fila a otra pestaña, en la primera fila libre que exista
            H1. Rows(i). EntireRow. Copy h2.Range("B" & h2.Range("B" & Rows. Count).End(xlUp).Row + 1)
        End If
    Next
    MsgBox "Copia finalizada. Revisa por favor que la información se ha trasladado bien a la pestaña correspondiente"
End Sub

Y la descripción de lo que se pretende es: en un único libro de Excel, se introducen una serie de gastos (uno por fila) con varias columnas de información. Me gustaría que desde la hoja donde se introducen los gastos (h1), una macro revisara todas las filas en las que en la columna "B" se indica "Gastos de delegación" para en caso afirmativo copiar toda la fila (desde la columna "B" hasta la última con datos) a otra pestaña (h2) en la que se pega en la primera fila con la columna "B" disponible que exista. Si no se cumple la condición deseada, no hacer nada, no se trasladarán los datos a ninguna otra hoja.

1 Respuesta

Respuesta
1

No índicas en que línea te salta el error, quizás sea en la de copia, mejor dejarla así:

 h1.Rows(i).EntireRow.Copy destination:=h2.Range("B" & h2.Range("B" & Rows. Count).End(xlUp).Row + 1)

Si esto resuelve tu consulta no olvides valorarla, sino comenta los detalles para probar tu macro.

Te recuerdo que la consulta sigue como 'pendiente' de resolución. Debes marcar una valoración (excelente o buena) para darla por cerrada si el tema quedó resuelto, sino comenta.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas