Copiar rango de datos según condición y pegar en otro libro en mismo rango de datos

Tengo un rango de datos el cual es el sig.

B17:E24

Y tengo otro el cual es

B190:B224

Para los dos rangos necesito un código..

Ejemplo:

Lo que necesito es que copie el rango y solo pegue los datos que están en un color

En este caso el color gris ( Rows(f). Interior.ColorIndex = 15)

Y los pegue en otro libro pero con el mismo nombre de hoja en el mismo rango

Osea que es el "mismo" libro pero con otro nombre y nuevo uso (lo hago por mes en este caso es el de julio.)

Esto quiere decir que solo pegara el rango en gris.

B17:E20 (es lo que esta en la condición GRIS)

Para el sig rango es lo mismo según yo. Ejemplo:

Aquí es copiar el segundo rango B190:B224 pero pegando solo los que cumplen con la condición anterior..

Esto quiere decir que cuando yo lo pegue

En mi libro AGOSTO

Este quedaría más o menos de la siguiente manera

Si se logra apreciar hay un color en azul...

Entonces, no se si la condición es que copie el rango y pegue solo los grises:

 Rows(f).Interior.ColorIndex = 15

o que me copie todo el rango y me pegue excepto los verdes:

Rows(f).Interior.ColorIndex = 4

espero su ayuda...

Si necesitan que les informe más sobre esto yo trepare más imágenes si es que no fui claro...

1 Respuesta

Respuesta
1

Te anexo la macro, siempre va a verificar si en la columna B tienes el color gris

Cambia en la macro "hoja4" por el nombre de la hoja.

"Agosto.xlsm" por el nombre del archivo destino, este libro deberá estar abierto cuando ejecutes la macro.

Sub CopiarFilasGrises()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja4")
    Set l2 = Workbooks("Agosto.xlsm")
    Set h2 = l2.Sheets("Hoja4")
    '
    f = 17
    For i = 17 To 24
        If h1.Cells(i, "B").Interior.ColorIndex = 15 Then
            h1.Range(h1.Cells(i, "B"), h1.Cells(i, "E")).Copy h2.Cells(f, "B")
            f = f + 1
        End If
    Next
    '
    f = 190
    For i = 190 To 224
        If h1.Cells(i, "B").Interior.ColorIndex = 15 Then
            h1.Rows(i).Copy h2.Rows(f)
            f = f + 1
        End If
    Next
    MsgBox "Datos copiados"
End Sub

S a l u d o s . D a n t e   A m o r

Recuerda valorar la respuesta.

¡Gracias! 

GENIAL

Es exactamente lo que necesito.... muchas muchas gracias dan...

HOLa dan

Y en vez de ("Hoja4")

¿Se le puede poner nombre interno de la hoja?

Porque lo aplicare en 10 hojas más con distinto nombre y aquí en el mensaje

MsgBox "Datos copiados"

si pueda agarrar el dato del nombre de la hoja ejemplo

msgbox "datos copiados" de "65" (nombre de la hoja)

Puede ser así:

    Set l1 = ThisWorkbook
    Set h1 = l1.Hoja1
    Set l2 = Workbooks("Agosto.xlsm")
    Set h2 = l2.Hoja1

Cambia Hoja1 por el nombre interno

y sobre el mensaje?

MsgBox "Datos copiados" & h2.name

ohohoh...

Gracias por el mensaje !

hola dan intente lo que del nombre interno de las hojas y me tope con esto

¿Y en cuál fila se detiene?

desde que lo intento ejecutar eso me sale... no me sale la franja amarilla de donde esta el error

Prueba así:

    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(Hoja5.Name)
    Set l2 = Workbooks("Julio.xlsm")
    Set h2 = l2.Sheets(Hoja5.Name)

Si! Así si funciona.. ya con esto concluimos mil gracias dan

:)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas