Filtrar, copiar y pegar filas en otra hoja.

No tengo mucha experiencia con macros y tengo el siguiente ejercicio:
Debo tomar las filas que cumplan 3 criterios a la vez (por ejemplo C3="Y" AND F3>=60% AND K3="Active") y copiarlas a otra hoja (hoja2) donde deben quedar ordenadas por otro criterio (por ejemplo si M3= 01/01/09 seria el primero en hoja2 o si M3=31/12/09 seria el ultimo en hoja2). La hoja inicial debe permanecer sin modificaciones, es decir que las filas filtradas solo serán mostradas en la hoja2.

1 respuesta

Respuesta
3
¿Tiene qué ser con macros? Si es así, encendé la grabadora (menú herramientas, macros, grabar) y realizá los siguientes pasos. Cuando finalices, detené la grabadora, entrá al Editor y allí en un módulo encontrarás la rutina.
1-Filtrá la tabla por los 3 criterios.
2- Seleccioná las filas resultantes (desde su encabezado), copiar.
3- Ir a la hoja 2 y pegar.
4- Ordenar la hoja 2 por la col de la fecha.
Otro modo de obtener esto sin macros, es utilizando Filtro Avanzado.
Si estás mencionando 'un ejercicio' puedo interpretar que es esto lo que te están solicitando y no macros.
En la Ayuda Excel encontrarás explicaciones y ejemplos de cómo utilizar este tipo de filtros.
Sdos. NO olvides finalizar la consulta si el tema queda concluido.
Elsa
PD) Para estudiar Excel nada mejor que contar con un buen manual:
Hola Elsa, muchas gracias por tu apoyo, he conseguido avanzar con el tema; sin embargo tengo un problema cuando en la hoja2 (a la que llame FORECAST) ordeno por fecha porque me piden que separe los registros por mes y que totalize algunas columnas para cada mes. La macro que tengo es esta:
Sub filtrar()
Range("A1").Select
    Selection.AutoFilter Field:=5, Criteria1:="Y", Operator:=xlAnd
    Selection.AutoFilter Field:=13, Criteria1:=">=60%", Operator:=xlAnd
    Selection.AutoFilter Field:=26, Criteria1:="Activa"
    filafin = ActiveSheet.Range("A65536").End(xlUp).Row
    Rows("2:" & filafin).Select
    Selection.Copy   
    Sheets("FORECAST").Select
    Range("A2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False     
    Sheets("Pipeline2009").AutoFilterMode = False
    Range("X3:X100").Select
    ActiveWindow.ScrollRow = 1
    Selection.Sort Key1:=Range("X3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Sheets("Pipeline2009").Activate
    Range("A1").AutoFilter
Pero no se como lograr que en la hoja Forecast me filtre por mes, ya que cuando uso la siguiente linea para el mes de agosto, por ejemplo:
Selection.AutoFilter Field:=1, Criteria1:="ago-09" la macro no lo hace a pesar que la grabadora genera el codigo de esa manera. En la hoja FORECAST aparece cada fecha como ago-09 y al seleccionar la celda muestra = 01/08/2009. Tampoco se como hacer para que despues del ultimo registro de cada mes agregue una nueva fila donde pueda totalizar las columnas que me piden.
No se si fui claro, espero que si.
Saludos y de nuevo gracias por tu apoyo.
Si, el filtro con fechas es siempre un problema, porque Excel toma el formato mm/dd/yy de tu celda con valor 01/08/2009
Probá con estas líneas. Aquí dejé fija la variable 'fecha1', pero ya sabrás si asignarle el valor de una celda, solicitar por InputBox o de qué manera.
Sub FiltroFecha()
' Macro grabada el 02/07/2009 por Elsamatilde
'
fecha1 = CDate("Ago-09")
mes = Month(fecha1)
dia = "01"
año = Year(fecha1)
fecha1 = mes & "-" & dia & "-" & año
mes2 = Month(fecha1)
dia2 = "31"
año2 = Year(fecha1)
fecha2 = mes2 & "-" & dia2 & "-" & año2
Selection.AutoFilter Field:=2, Criteria1:=">=" & fecha1, Operator:=xlAnd, _
        Criteria2:="<=" & fecha2
End Sub
Espero que el ejemplo te sirva para ajustarlo a tu rutina.
Sdos
Elsa
http://aplicaexcel.galeon.com/manuales.htm
Hola Elsa,
Finalmente opte por hacer la macro de otra manera basado en tus apreciaciones. Muchas gracias y que bueno que recibí tu asesoría porque busque en la página tu ayuda en particular pero en ese momento no estabas disponible.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas