Copiar datos de un libro a otro en diferentes hojas

Mi intención sería crear un botón macro en la barra de tareas que haga lo siguiente.

Para empezar, tenemos los archivos base:

Base de datos Sin Filtro

Unas 5000 referencias.

Libro Destino Base

Lo que necesito es lo siguiente, traspasar datos de Base de datos sin filtro a Libro Destino Base teniendo en cuenta los siguientes factores, cogiendo como referencia el archivo:

Base de datos Filtrada

Vemos que tenemos dos filtros aplicados sobre columna C y F el cual nos da en este caso 4 filas de datos, me gustaría pasar ciertos datos de cada fila, pero en diferentes hojas.

Para el ejemplo tenemos el archivo:

Libro Destino base.

Aquí vemos como debería ser la plantilla a seguir para cada hoja, si abrimos el Libro:

Libro Destino Final

Vemos como quedaría y que datos pasar, en este caso de la Base de datos Filtrada pasaría

Referencia

Operación

Provincia

Precio de venta

Vendedor

Y cada hoja del libro Destino tiene el nombre de la celda Referencia.

En resumen, al libro de base de datos quiero aplicarle dos filtros y de cada línea que me salga pasar esos datos al libro destino, pero cada línea en diferente hoja y la hoja con el nombre de la celda Referencia.

¿Se podría hacer algo así?

1 respuesta

Respuesta
1

[Hola 

¿El filtro lo harás en forma manual?

Si.

Un saludo y gracias.

[Hola 

VALORA la repuesta para finalizar


Te paso la macro .

Serán 2 hojas, Hoja_Filtro y crea una hoja temp para la plantilla.



Sub copiar_filtro()
    '
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set h1 = Sheets("Hoja_Filtro")
    Set h2 = Sheets("temp")
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    '
    For i = 2 To u
        h2.Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = h1.Cells(i, "A")
        Set h20 = ActiveSheet
        '
        h20.[B3] = h1.Cells(i, "A")
        h20.[B5] = h1.Cells(i, "D")
        h20.[B7] = h1.Cells(i, "E")
        h20.[B9] = h1.Cells(i, "G")
        h20.[B11] = h1.Cells(i, "I")
    Next i
    '
    Application.ScreenUpdating = True
   MsgBox "fin"
End Sub

Hola muchas gracias, casi hace todo pero, al ejecutarlo en vez de copiar solo lo filtrado, me pasa todos los datos de la base. Me explico, filtre y de ahí me salio 5 resultados, pues en vez de copiar esos 5, me abrió  y copio unos 20 que era todos los datos de la base de datos de prueba.

[Hola 

Cambia la valoración de la respuesta


Te paso la macro con los ajustes

Sub copiar_filtro()
    '
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set l1 = ThisWorkbook
    Set h1 = Sheets("Hoja_Filtro")
    Set h2 = Sheets("temp")
    Set h30 = Sheets.Add
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    h1.Range("A2:I" & u).Copy h30.Range("A1")
    '
    u2 = h30.Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To u2
        h2.Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = h30.Cells(i, "A")
        Set h20 = ActiveSheet
        '
        h20.[B3] = h30.Cells(i, "A")
        h20.[B5] = h30.Cells(i, "D")
        h20.[B7] = h30.Cells(i, "E")
        h20.[B9] = h30.Cells(i, "G")
        h20.[B11] = h30.Cells(i, "I")
    Next i
    '
    h30.Delete
    Application.ScreenUpdating = True
   MsgBox "fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas