Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Copiar filas filtradas hacia un nuevo libro

| 7 comentarios

Usualmente, cuando trabajamos con información a la cual le aplicamos un filtro para quedarnos solamente con algunas filas, deseamos que esas filas filtradas se copien a un nuevo libro de Excel.

Si bien, este proceso se puede realizar de manera manual, seleccionando el rango, copiándolo, abriendo un nuevo libro de excel, pegar la información y ajustar el tamaño de las columnas, mediante la siguiente macro presenta una alternativa que permite acelerar el proceso descrito. El código que nos permitirá realizarlo es el siguiente:

Sub Copiar_filtro()

 'Paso 1

If ActiveSheet.AutoFilterMode = False Then
Exit Sub
End If

'Paso2

ActiveSheet.AutoFilter.Range.Copy
Workbooks.Add.Worksheets(1).Paste

'Paso 3

Cells.EntireColumn.AutoFit

'Paso 4

Application.DisplayAlerts = False
Sheets("Hoja2").Delete
Sheets("Hoja3").Delete

End Sub

 A manera de ejemplo, veamos el siguiente archivo Copiar filas filtradas.

Éste contiene una hoja llamada "08061000000" en la cual se encuentra la información correspondiente a las exportaciones peruanas de Uva durante el año 2013, obtenido de la página web de SUNAT (https://www.sunat.gob.pe/).

En el paso 1, lo que hace la MACRO es verificar si es que se ha activado un filtro dentro de la hoja activa, de no ser así, la MACRO termina en este paso y no ocurre nada con la data de la hoja;

1-1

(Para mayor visualización de la imagen, hacer click en la misma)

si se detecta un filtro, se procede al paso 2.

1-2

(Para mayor visualización de la imagen, hacer click en la misma)

 

En el paso 2, lo que se hace es seleccionar el rango que se encuentre filtrado (en este caso se ha filtrado las exportaciones hacia Bélgica, "Belgium" en el archivo). Entonces, las filas filtradas se copian y se abre un nuevo libro de excel.

2-1 2-2

(Para mayor visualización de la imagen, hacer click en la misma)

En el paso 3, en el nuevo libro se ajusta el tamaño de las columnas que se han pegado

En el paso 4, lo que se hace simplemente es eliminar las hojas 2 y 3 que aparecen por default cuando se abre un nuevo libro, de tal manera que el libro generado para pegar la información filtrada solo cuente con una hoja (aquella con la información que habíamos filtrado)

3-1

3-2

NOTA: Al ser esta una tarea de uso frecuente, se recomienda que esta MACRO se guarde dentro del libro personal de macros.

-----------------------------------------------------------

Elaborado por: Diego Solís Pezzia

7 comentarios

  1. gracias Diego por el macro
    Copiar filas filtradas hacia un nuevo libro

    si quiero hacer un indice de paises, para que la macro copie cierta celdas del listado original, y las pegue en otra hoja pero cada pais enlistado en el indice y la columna (EJEMPLO peso bruto) se pegue enseguida
    como puedo hacer esta macro
    saludos

  2. Buenas noches

    Pregunta si tengo varias columnas y en cada una estoy filtrando por algún criterio ej: pais, pero en una de las columnas no esta, como hago para que no tenga encuenta esa columna y pase a hacer el filto a la siguiente columna ej:

    A b c d
    ciuda pais region pais
    Pais region departamento ciudad
    departamento ciudad ciudad departamento
    region ciudad ciudad

    como podemos ver la columna c no tiene pais como seria para que filtre cada columna y y esocga pais y lo pege en una nueva hoja

  3. Buenas muy amable por el ejemplo pero la macro tiene un error. El If esta incorrecto. De igual manera gracias, me ha servido para pedirles a mis estudiantes que hallaran el error

    • Hola Kelvins

      Si bien el Exit sub es inusual, si funciona el código indicado, el código se podría mejorar empleando "on error", o sino dentro del IF usar una variable que permita continuar la ejecución.

      Otro de los aspectos que se podría mejorar es controlar:
      Sheets(“Hoja2”).Delete
      Sheets(“Hoja3”).Delete
      El código no funcionaría en esta parte si las dos hojas indicadas no existiesen.

  4. Excelente aporte, una consulta, como hago si por ejemplo quiero copiar lo filtrado solo desde la columna C1:O hasta la ultima fila con datos? te agradeceria si me ayudas con ese tip, muchas gracias.

  5. Con respecto a la macro su funcionamiento es excelente, pero como podría hacer que en ves que abra un archivo nuevo cada vez que doy ejecutar, definir un solo archivo repositorio y sobre ese mismo valla guardando información a partir de la fila vacia

  6. Excelente! Muchas gracias.

Deja una respuesta

Los campos requeridos estan marcados con *.