Discussione:
Filtro Automatico con Vba su colonna
(troppo vecchio per rispondere)
Max
2008-12-03 15:31:01 UTC
Permalink
Ho questo problema e leggendo i vari posts non sono riuscito a risolvere:

Su un foglio (Foglio 1) ho un elenco di dati estratto con una query in cui
nella colonna 5 ho delle date

In un altro foglio (Foglio 2) nelle celle A1 e B1 ho inserito due date per
filtrare l'elenco di Foglio1 (A1 data inziio e B1 data fine)

Come faccio a creare una Macro in Vba per filtrare automaticamente l'elenco
di Foglio 1 sulla base del range di date di colonna5?

Grazie mille a chi mi vorrà aiutare.

Max
Mauro Gamberini
2008-12-03 16:10:38 UTC
Permalink
Post by Max
Su un foglio (Foglio 1) ho un elenco di dati estratto con una query in cui
nella colonna 5 ho delle date
In un altro foglio (Foglio 2) nelle celle A1 e B1 ho inserito due date per
filtrare l'elenco di Foglio1 (A1 data inziio e B1 data fine)
Come faccio a creare una Macro in Vba per filtrare automaticamente l'elenco
di Foglio 1 sulla base del range di date di colonna5?
Considerando la tua tabella in Folglio1 con in riga 1
i nomi dei campi e con inizio in A1:

Public Sub mFiltra()

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sData1 As String
Dim sData2 As String

Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")

With sh2
sData1 = ">=" & _
Format(.Range("A1").Value, "mm/dd/yyyy")
sData2 = "<=" & _
Format(.Range("B1").Value, "mm/dd/yyyy")
End With

With sh1
.Select
.Range("A1").Select
End With

With Selection
.AutoFilter Field:=5, _
Criteria1:=sData1, _
Operator:=xlAnd, _
Criteria2:=sData2
End With

Set sh1 = Nothing
Set sh2 = Nothing

End Sub


In Foglio2 nella cella A1 la data inferiore, in B1 quella superiore.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
Max
2008-12-04 13:56:01 UTC
Permalink
Post by Mauro Gamberini
Post by Max
Su un foglio (Foglio 1) ho un elenco di dati estratto con una query in cui
nella colonna 5 ho delle date
In un altro foglio (Foglio 2) nelle celle A1 e B1 ho inserito due date per
filtrare l'elenco di Foglio1 (A1 data inziio e B1 data fine)
Come faccio a creare una Macro in Vba per filtrare automaticamente l'elenco
di Foglio 1 sulla base del range di date di colonna5?
Considerando la tua tabella in Folglio1 con in riga 1
Public Sub mFiltra()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sData1 As String
Dim sData2 As String
Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")
With sh2
sData1 = ">=" & _
Format(.Range("A1").Value, "mm/dd/yyyy")
sData2 = "<=" & _
Format(.Range("B1").Value, "mm/dd/yyyy")
End With
With sh1
.Select
.Range("A1").Select
End With
With Selection
.AutoFilter Field:=5, _
Criteria1:=sData1, _
Operator:=xlAnd, _
Criteria2:=sData2
End With
Set sh1 = Nothing
Set sh2 = Nothing
End Sub
In Foglio2 nella cella A1 la data inferiore, in B1 quella superiore.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
Grazie Mille funziona alla grande,
ora, se voglio inserire in A3 un ulteriore condizione di filtro ma questa
volta con una dato di testo (Nome società) che nell'elenco originario è in
colonna 2 come devo modificare il vba?
Il mio obiettivo finale è filtrare un elenco di prestazioni suddivise per
società e per data ed ottenere quelle della sola società scelta
nell0intervallo di date prescelto.

Grazie mille a tutti
elby
2008-12-03 17:51:27 UTC
Permalink
Ciao Max
Excel ti mette a dispone un metodo che può fare completamente a meno
di VBA.
Devi parametrare la Query e collegare i parametri alle celle data
inizio e data fine
Seleziona una cella della tabella dei dati importati; dalla barra
flottante Importa dati, clicca su Modifica Query
Ti si apre Microsoft Query
Dal menù Criteri seleziona Aggiungi Criterio
Ti si aggiunge la griglia dei criteri. In corrispondenza della colonna
della data, nella griglia alla riga Valore digita
Between [data inizio] And [data fine]
Premi sul punto esclamativo rosso e immetti i parametri quando ti
vengono richiesti per verificare che tutto funzioni.
Esci da Microsoft Query.
Ora sulla barra flottante diventa funzionale anche il pulsante
Parametri.
Clicac su paramteri. Nella successiva finestra segui lòe istruzioni
per legare i parametri a valori inseriti in celle su un foglio di
lavoro.
Seleziona se vuoi l'aggiornamento automatico al variare del valore
delle celle alle quali i parametri sono agganciati.
Nulla ti vieta di lasciare l'aggiornamento non automatico e aggiornare
la QueryTable manualmente ( punto esclamativo rosso sulla barra
flottante ) o tramite VBA ( metodo Refresh dell'oggetto QueryTable
Ciao Elio
Post by Max
Su un foglio (Foglio 1) ho un elenco di dati estratto con una query in cui
nella colonna 5 ho delle date
In un altro foglio (Foglio 2) nelle celle A1 e B1 ho inserito due date per
filtrare l'elenco di Foglio1 (A1 data inziio e B1 data fine)
Come faccio a creare una Macro in Vba per filtrare automaticamente l'elenco
di Foglio 1 sulla base del range di date di colonna5?
Grazie mille a chi mi vorrà aiutare.
Max
Continua a leggere su narkive:
Loading...