Copiar filas dependiendo de condición de una columna

Esta va para DAM:

Tengo el siguiente código:

Sub CopiarColumnas()
Application.ScreenUpdating = False
cols = Array("C", "B", "D", "K", "L", "M", "H", "N", "O", "P", "Q", "R", "U", "W", "T", "F")
Set h1 = Sheets("Autor_MASTER")
Set h2 = Sheets("Reportes")
h2.Cells.ClearContents
k = 1
For J = LBound(cols) To UBound(cols)
u = h1.Cells(Rows.Count, cols(J)).End(xlUp).Row
h1.Range(h1.Cells(5, cols(J)), h1.Cells(u, cols(J))).Copy
h2.Cells(3, k).PasteSpecial xlValues
k = k + 1
Next
Application.ScreenUpdating = True
h1.Select
MsgBox "Datos copiados", vbInformation
End Sub

Este me permite copiar columnas especificas a otra hoja, el asunto es que tengo al final de la hoja principal una columna flag (0,1) lo que quisiera es que a partir de este codigo SOLO copie las filas que tienen el flag activo y lo que esta inactivo copie a una hoja aparte (hoja3), me facilitaste el sgte código:

Pero este copia todas las columnas y copia todo tal cual con fórmulas y no con valores.

La pregunta es, ¿Cómo puedo complementar el primer código con este segundo? Gracias.

Sub CopiarFila()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1") 'hoja origen
    Set h2 = Sheets("Hoja2") 'hoja destino
    Set h3 = Sheets("Hoja3") 'hoja destino
    '
    col = "S"                'columna flag
    For i = 1 To h1.Range(col & Rows.Count).End(xlUp).Row
        Select Case h1.Cells(i, col)
            Case 1: h1.Rows(i).Copy h2.Rows(h2.Range(col & Rows.Count).End(xlUp).Row + 1)
            Case 0: h1.Rows(i).Copy h3.Rows(h3.Range(col & Rows.Count).End(xlUp).Row + 1)
        End Select
    Next
    MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o