Filtro avanzado

Tengo un libro con 20 hojas cada una con un nombre, en la primera hoja la llamo "pedidos" y las restantes hojas las identifico con un numero 01 - 05 - ... 20 representan a familias de artículos no se como hacer una macro en la hoja "pedidos"que según el valor celda ("c5"),"c10"), ("c12"), primero vaya a la hoja valor ("c5")y en esa hoja filtre unos datos según los dos criterios ("c10" ) ("c12") donde selecciono un rango para copiar en la hoja"pedidos" en la posición inicial de ("g2") si esta vacía, si no en la siguiente en order descendiente ("g3")
2

2 respuestas

Respuesta
1
Envíame tu correo electrónico para enviarte un archivo con un ejemplo que me inventé a ver si es lo que necesitas.
Cordialmente,
cmera
Gracias anticipadas mi correos es
[email protected]
Te acabo de enviar el archivo de ejemplo que armé de acuerdo a lo que entendí, si está mal por favor me envías el tuyo a vuelta de correo para corregir lo necesario.
Si está todo OK o contribuye en un buen porcentaje a la solución definitiva favor calificar la respuesta de acuerdo a la calidad de la misma.
Cordialmente,
cmera
Respuesta
1
En el Editor, deberás insertar un módulo y copiar estas 2 rutinas. Fíjate los comentarios para encontrar las líneas donde deberás ajustar a tus referencias
La primera encuentra la primer fila libre en la col G de la hoja Pedidos
La segunda aplica filtros en las hojas siguientes según los criterios ingresados en C10 y C12. Supuse que los criterios corresponden a las columnas 1 y 2 (ajustar) y empiezan en la fila 3. Debes dejar la fila 2 libre ( títulos en la 1)
Si te presenta alguna dificultad solicítame el libro con el ejemplo a mi correo (ver nota al pie)
Sub FilaLibre1()
' Macro grabada el 06/05/2005 por Elsamatilde
'se recorre una col a partir de la celda activa
Sheets("Pedidos").Select
ActiveSheet.Range("G2").Select
While ActiveCell.Value <> ""
'se pasa a la fila siguiente
ActiveCell.Offset(1, 0).Select
'se repite el ciclo
Wend
filalibre = ActiveCell.Row
End Sub
Sub FiltroAvanzado()
' Macro grabada el 06/05/2005 por Elsamatilde
Dim miHoja As String, crit1 As String, crit2 As String, Unacelda As String
Dim celdas As String, dire As String, ulti As String
Dim dosptos, coma As Byte
'buscar celda vacía
FilaLibre1
miHoja = (Sheets("Pedidos").Range("C5"))
crit1 = Sheets("Pedidos").Range("C10")
crit2 = Sheets("Pedidos").Range("C12")
'seleccionar una celda de la base a filtrar
On Error GoTo NoHoja
Sheets(miHoja).Select
ActiveSheet.Range("A2").Select
'se establece Autofiltro
Selection.AutoFilter
'se filtra la columna 1 y 2 por los criterios guardados
Selection.AutoFilter Field:=1, Criteria1:=crit1
Selection.AutoFilter Field:=2, Criteria1:=crit2
'Indicar una celda de la base filtrada:
Unacelda = "A2"
'Copiado de celdas visibles
Range(Unacelda).CurrentRegion.SpecialCells(xlCellTypeVisible).Select
celdas = Selection.Address
ulti = Right(celdas, 3)
'se ubica la última fila y posición de la primer coma
If InStr(1, ulti, "$") = 1 Then
ulti = Right(ulti, 2)
Else
ulti = Right(ulti, 1)
End If
coma = InStr(1, celdas, ",")
'se ubica la posición del primer dospuntos a partir de la posición de la coma
On Error Resume Next
dosptos = InStr(coma, celdas, ":")
'se guarda la dirección que se encuentra a partir de la primer coma y antes del 2 puntos
dire = Mid(celdas, coma + 1, dosptos - (coma + 1))
dire = Range(dire).Address(False, False)
Range(dire & ":C" & ulti).SpecialCells(xlCellTypeVisible).Copy
' Establecer libro, hoja y rango de destino
Sheets("Pedidos").Activate
Cells(filalibre, 7).Select
'pegado de valores
Selection.PasteSpecial Paste:=xlValues
'Pegado de formatos
Selection.PasteSpecial Paste:=xlFormats
'quitar filtros
Sheets(miHoja).Range("A1").AutoFilter
Exit Sub
NoHoja:
MsgBox "No se encuentra hoja con ese número"
End Sub
Saludos
Elsa
*** No te pierdas el Manual con las 300 Macros explicadas en español. Descarga la Demo gratis desde:
http://es.geocities.com/lacibelesdepunilla/manual

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas