Re. Filtros para Hector Miguel.

26/09/2003 - 00:53 por AGUAVERDE | Informe spam
Gracias por contestar mi duda. Quiza lo que planateo sea
un poco complicado, y más cuando yo soy un neofito en la
materia.
Bien, me explicaré: Existen dos columnas en la base de
datos, una de valores fijos corespondientes a cada día
del año (del 1 de enero al 31 de diciembre) y otra de
eventos, cuyo contendio es igual al que se introduce en
la casilla de otra hoja. En este los datos pueden variar(
una "L", un "PC", una casilla en blanco. En principio
sería esta la que se filtraria: es decir al desplegar los
valores, se marcaria uno y aparecerían los días
correspondientes en los que se ha disfrutado del evento.
La consulta se haría a traves de estos valores, y existe
la posibilidad de que un evento se conrresponda hasta con
30 días.
Se podría activar calculate a traves de un boton, o
introduciendo un valor en una casilla para que buscase el
igual en la columna de la base de datos.
La base de datos no estaría protegida, pero si oculta.
Te repito que soy un neofito, así que si encurntras
respuestas, te pediria me las desglosases de manera que
puediera entenderlo.
Gracias de antemano
 

Leer las respuestas

#1 Héctor Miguel
27/09/2003 - 01:22 | Informe spam
Hola :)

... dos columnas ... una de valores fijos ... cada día del año ... otra de eventos ... esta ... se filtraria [...]



1) considerando el mensaje 'original', me he tomado [algunas] 'atribuciones' como...
a) [supongo que] existen ['al menos'] dos columnas CON autofiltro y la segunda es la que se filtra
b) la primer columna [fechas?] NO tiene espacios vacios [o celdas 'en blanco']
c) las 'opciones' parta filtrar son 'directas' [solo el elemento seleccionado] =>SIN 'combinaciones' y / o<2) lo que 'hace' el codigo propuesto [combinando autofiltros con filtros avanzados] es:
a) la accion SOLO se realiza si esta 'activo' el autofiltro de la 2ª columna [del rango con filtros]
b) copia [el resultado de] el rango filtrado a 'otra' hoja [¿Hoja2?] -que puede o no estar 'oculta'-
c) cada vez que 'sucede', se agregan los resultados del autofiltro a la 'otra' hoja ['iniciando' en el rango "a5"]
d) 'pone' en la 'otra' hoja [en el rango "b1:b2"] los criterios que fueron usados por el autofiltro
3) si usas Excel '97, la hoja con autofiltros necesita tener [al menos] una formula que 'obligue' a un 're-calculo automatico'
4) el codigo lo debes copiar en el modulo de la hoja con el autofiltro =>'click-derecho' [sobre la pestaña] => ver codigo...

el codigo ==Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
If Not Me.AutoFilterMode Then Exit Sub
If Not Me.AutoFilter.Filters(2).On Then Exit Sub
Dim RangoAutoFiltro As String, RangoDatos As String, _
CopiarA As String, Borrar As Boolean
RangoAutoFiltro = Me.AutoFilter.Range.Address
With Me.Range(RangoAutoFiltro)
RangoDatos = .Offset(1).Resize(.Rows.Count - 1).Address
End With
With Worksheets("Hoja2")
.Range("b1") = CStr(Me.Range(RangoAutoFiltro).Cells(1, 2))
.Range("b2") = "'" & Me.AutoFilter.Filters(2).Criteria1
If .Range("a5") <> "" Then
CopiarA = .Range("a5").End(xlDown).Offset(1).Address
Borrar = True
Else: CopiarA = "a5"
End If
Me.Range(RangoAutoFiltro).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Range("b1:b2"), _
CopyToRange:=.Range(CopiarA)
If Borrar Then .Range(CopiarA).EntireRow.Delete
On Error GoTo Salir
Application.EnableEvents = False
Me.Range(RangoAutoFiltro).AutoFilter _
Field:=2, Criteria1:=Mid(.Range("b2"), 2)
End With
Salir:
Application.EnableEvents = True
End Sub
_______
Saludos,
Héctor.
MS-MVP

Preguntas similares