Ma mi da errore sul worksheets (gia nell'editor), non mi accetta la
mia stringa di criteri.
Come si può fare?
Grazie
> Do While Range("E" & riga).Value <> ""
> If filtro = "" Then
> filtro = "Criteria" & riga - 1 & ":=""=" & Range("E" & riga).Value
> & ""
>
Considerando che le condizioni di un autofilter sono al massimo 2 io
riscriverei il tutto così:
'=======================
Option Explicit
Private Sub CommandButton1_Click()
Dim filtro1 As String
Dim filtro2 As String
Dim Rng As Range
Dim ws As Worksheet
Dim wb As Workbook
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Foglio3")
Set Rng = wb.Worksheets("Foglio1").Range("E2:E3")
With Rng.Cells(1, 1)
filtro1 = .Value
End With
With Rng.Cells(2, 1)
filtro2 = .Value
End With
With ws.Range("I1")
If filtro1 <> "" Then
If filtro2 <> "" Then
.AutoFilter Field:=9, Criteria1:=filtro1, _
Operator:=xlOr, Criteria2:=filtro2
Else
.AutoFilter Field:=9, Criteria1:=filtro1
End If
Else
.AutoFilter Field:=9
End If
End With
Set Rng = Nothing
Set ws = Nothing
set wb = Nothing
End Sub
'=================
Fai sapere se e come hai risolto, grazie
--
Bye!
Scossa
ci provo, grazie
Provato. Funziona solo per 2 criteri, io ne potrei avere di più,
soprattutto non su righe vicine, ma deve "cercare" i valori in tutta
la colonna
Non vedo come potresti inserire più di due criteri, visto che sono il
massimo permesso da Autofilter:
=============== DALL'HELP ==========================
Metodo AutoFilter:
espressione.AutoFilter(Field, Criteria1, Operator, Criteria2,
VisibleDropDown)
.... omissis ....
=====================================================
Per usare più condizioni devi passare al filtro avanzato ... fai una
ricerca in questo NG
(chiave: Filtro avanzato con macro )
Fai sapere se risolvi, grazie
__
Bye!
Scossa
Alla fine vorrei ottenere una cosa così
ActiveSheet.ShowAllData
range("I1").Select
Selection.AutoFilter
ActiveSheet.ListObjects("Tabella_OFFIC_2009").range.AutoFilter
Field:=9, _
Criteria1:=Array("st156", "st190", "st200", "st217", "st253",
"st257", "st388", _
"st401"), Operator:=xlFilterValues
dove i vari "st" li leggo dalla colonna del foglio 1
Non so come creare un array
Se(se) ho capito.
Dalla guida:
<giuda>
Criteria1 Argomento facoltativo di tipo Variant.
Il criterio (una stringa, ad esempio "101").
Utilizzare "=" per trovare i campi vuoti
oppure "<>" per trovare i campi non vuoti.
Se viene omesso, il criterio č All.
Se Operator č xlTop10Items,
Criteria1 specifica il numero di voci (ad esempio, "10").
</guida>
Non vedo si parli di Array.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Beh io il codice che ho postato ho fatto un registra macro andando a
selezionare dal filtro nel menù a tendina vari valori e lui l'ha
tradotto come sopra
Se io riuscissi ad avere un Array e poterci scrivere dentro i valori
poi lo passerei a criteria1
Non capisco cosa vuoi fare.
Per ciň che riguarda gli Array.
Scrivi Array in un modulo e premi
il tasto F1.
in foglio1 celle A2:A.. i tuoi dati
In foglio3 celle E2:E.... i valori da filtrare (p.e.: 15 30 e 40)
'===============0
Sub test()
Dim rngflt As Range
Dim cella As Range
Dim aFlT() As String
Dim j As Long
Set rngflt = ActiveWorkbook.Worksheets("Foglio3").Range("E2:E4")
For Each cella In rngflt
j = j + 1
ReDim Preserve aFlT(1 To j)
aFlT(j) = Format(cella.Value, "@")
Next
Worksheets("Foglio1").Range("$A$1:$A$7").AutoFilter Field:=1, _
Criteria1:=aFlT, Operator:=xlFilterValues
Set rngflt = nothing
End Sub
'=================
Fai sapere se hai risolto, grazie.
--
Bye!
Scossa
Risolto così
Private Sub filtro()
Dim riga, j As Integer
Dim filtro() As String
Dim ws As Worksheet
Dim wb As Workbook
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Foglio3")
riga = 2
j = 1
Do While ActiveSheet.range("E" & riga).Value <> ""
ReDim Preserve filtro(1 To j)
filtro(j) = Format(Left(ActiveSheet.range("E" & riga).Value, 5),
"@")
riga = riga + 1
j = j + 1
Loop
ws.range("A1").AutoFilter Field:=9, _
Criteria1:=filtro, Operator:=xlFilterValues
End Sub
Adesso devo provarlo su un Excel 2003, ma non dovrebbero esserci
problemi
E invece si ci sono i problemi: questa operazione non è valida
Operator:=xlFilterValues in quanto il filtro del 2003 accetta solo un
valore di scelta, mentre il 2007 ne accetta più di uno segnandoli con
il checkbox
Che, in mancanza di tue indicazioni
sulla versione di Excel utilizzata,
era quanto ti avevo postato.
Io ho il 2007, ma speravo fosse retroattivo fino almeno al 2003.
Quindi alla fine non è fattibile una cosa del genere con il filtro del
2003?
E' una funzionalità introdotta con il 2007.
Ho notato: leggevo in giro di un advacedfilter, ho provato a farlo con
i criteri, ma non funziona. Domani ci proverò per l'ennesima volta