Filtrar, copiar, pegar, guardar... pero con Macro

25/02/2008 - 13:37 por ivok007 | Informe spam
Buen día,
Tengo una hoja llamada "Resumen"con 5 columnas (Producto, Fecha de
Egreso, Cantidad, Costo $) y más de 5000 filas. Son 295 tipos de
Productos
Una vez al mes debo agrupar, en una nueva hoja, todo el detalle
correspondiente a cada Producto. (Es decir genero en total 295 hojas)
¿Como lo hago? Tomo la hoja Ž"Resumen" y Filtro por Producto, luego
copio todas las columnas, habro una hoja nueva, pego y guardo la hoja
con el nombre del Producto. Y asi 295 veces (una por cada producto)
hasta terminar.
He intentado una macro, pero soy menos que principiante.
(los datos de Producto están ordenados y por tanto todos juntos)

Producto Fecha de Egreso Cantida Costo$
1 0096 01/02/08
2
3
4
5
6
7

Preguntas similare

Leer las respuestas

#6 ivok007
29/02/2008 - 12:40 | Informe spam
Hola Héctor,

Lo siento mucho pero la macro no funciona o yo no tengo futuro en
Excel .)
He seguido tus intrucciones (creo que al pie de la letra) , he leído
la macro y buscado información para entenderla ante de volver a
molestarte, pero no hay caso.

Esta vez he dejado todas las columas libres a partir de la F pero esto
vuelve a suceder:
Los datos en las columnas a,b,c,d, se borran ( los datos de la columna e no se borran)
luego aparecen estos datos en el rango g1:h4
g1= "Producto", h1="Producto"
g2= 2 , h2=2
g3= 52
g4= 96



Donde puede estar el problema?
Gracias,
Marcelo
Respuesta Responder a este mensaje
#7 Héctor Miguel
29/02/2008 - 21:41 | Informe spam
hola, Marcelo "

Lo siento mucho pero la macro no funciona o yo no tengo futuro en Excel .)
He seguido tus intrucciones (creo que al pie de la letra) , he leido la macro
y buscado informacion para entenderla ante de volver a molestarte, pero no hay caso.
Esta vez he dejado todas las columas libres a partir de la F pero esto vuelve a suceder:
Los datos en las columnas a,b,c,d, se borran ( los datos de la columna e no se borran)
luego aparecen estos datos en el rango g1:h4
g1= "Producto", h1="Producto"
g2= 2 , h2=2
g3= 52
g4= 96



Donde puede estar el problema?



te paso el mismo codigo (ahora) con comentarios que que hace cada linea
deberas copiarlo en un modulo de codigo estandar en el libro que contiene la hoja "resumen" y ejecutarlo desde ese libro
(el siguiente paso seria enviarte un ejemplo a tu correo) :D

saludos,
hector.

Sub Filtra_productos()
' definimos una variable para trabajar con objetos 'Range' '
Dim Celda As Range
' congelamos la actualizacion de la pantalla '
Application.ScreenUpdating = False
' trabajamos con la hoja que se llama "resumen" en el libro que contiene esta macro '
With Worksheets("resumen")
' copiamos el titulo de A1 -productos ?- a las celdas G1 y H1
.Range("g1:h1") = .Range("a1")
' hacemos filtro avanzado SIN repetidos y lo ponemos en la columna G '
.Range(.Range("a1"), .Range("a65536").End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, _
Unique:=True, _
CopyToRange:=.Range("g1")
' repetimos filtros avanzados por cada producto unico desde la columna G '
For Each Celda In .Range(.Range("g2"), .Range("g65536").End(xlUp))
' establecemos como criterio el siguiente producto NO repetido -ahora en la columna H- '
.Range("h2") = Celda
' agregamos una hoja limpia al final de este libro '
Worksheets.Add After:=Worksheets(.Index)
' copiamos los titulos A:D de la fila 1 a la hoja nueva '
Range("a1:d1").Value = .Range("a1:d1").Value
' hacemos el filtro avanzado con el criterio del producto a las columnas A:D de la hoja nueva '
.Range(.Range("a1"), .Range("a65536").End(xlUp)).Resize(, 4).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("h1:h2"), _
CopyToRange:=Range("a1:d1")
' movemos la hoja nueva para que se convierta en un libro nuevo '
ActiveSheet.Move
' guardamos el libro nuevo con el nombre del producto '
ActiveWorkbook.SaveAs Celda, xlWorkbookNormal
' cerramos el libro recien guardado (UNO POR CADA PRODUCTO) '
ActiveWorkbook.Close False
Next
' "limpiamos el efecto de los filtros avanzados en las columnas G:H '
.Columns("g:h").Clear
End With
End Sub
Respuesta Responder a este mensaje
#8 Giancarlo
10/04/2008 - 18:09 | Informe spam
Hector,
que tal... yo tengo un problema un poco mas basico que Marcelo, lo que pasa
es que soy nuevo haciendo "cosas raras" con excel, siempre lo he usado para
calculos y tablas dinamicas, pero ahora quiero hacer filtros dinamicos.. es
decir desde macros.
El caso es muy simple... tengo una hoja con varias columnas y quiero crear
un boton que al pulsarlo capture el valor de una celda que no forma parte de
los datos, es decir, no esta en el rango de datos y que lo use como criterio
para filtrar una columna especifica.
Por favor, tendras algun codigo que me pueda orientar a esto.

Mil gracias

Giancarlo
Respuesta Responder a este mensaje
#9 Héctor Miguel
10/04/2008 - 19:06 | Informe spam
hola, Giancarlo !

... tengo una hoja con varias columnas y quiero crear un boton que al pulsarlo capture el valor de una celda que
... no esta en el rango de datos y que lo use como criterio para filtrar una columna especifica.
... algun codigo que me pueda orientar a esto...



si suponemos que la hoja con varias columnas es la "hoja1" y que los datos inician desde la celda A1 (titulos incluidos)
y suponemos tambien que la "columna especifica" para aplicar un autofiltro es la columna B (o la segunda del area de datos)
y suponemos que la celda que no es parte del rango, incluso esta en otra hoja (hoja2 ?) y que se trata de la celda D1
puedes usar una macro +/- como la siguiente (ya modificaras con los datos reales)...

Sub Filtra()
With Worksheets("hoja1")
If .AutoFilterMode Then .Cells.AutoFilter
.Range("a1").AutoFilter Field:=2, _
Criteria1:=Worksheets("hoja2").Range("d1")
End With
End Sub

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida