Condividi:        

AUTOFILTER CHE NON FUNZIONA

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

AUTOFILTER CHE NON FUNZIONA

Postdi mirmidone21 » 14/06/16 09:56

Buongiorno a tutti
ho un file (che allego) ed ho costruito una macro che mi funziona bene tranne una cosa che non riesco a capire ne a risolvere.
in effetti nel foglio3 alla colonna E inserisco un CERCA.VERT che mi seleziona dei valori.
dopo cerco di auto filtrarli con la seguente istruzione, ma non funziona, perchè??

Codice: Seleziona tutto
ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=5, Criteria1:="<>#N/D"


preciso che la stessa istruzione precedentemente per altre colonne ha funzionato benissimo, è come se mancasse l'OK.
infatti se vado a controllare manualmente nel filtro colonna, l'istruzione c'è, e se premo OK funziona.
Boh ??????
questa è la macro
Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
'

'
 Dim ur As Long
ur = Cells(Rows.Count, "A").End(xlUp).Row

    ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=17, Criteria1:= _
        "VIO - CIR cliente irreperibile"
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Cells.Select
    Selection.RowHeight = 15
    Cells.Select
    Cells.EntireColumn.AutoFit
    Sheets("Foglio1").Select
    Sheets("Foglio1").Name = "TOTALE"
    Sheets("ENS").Select
    ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=12, Criteria1:="<>"
    ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=16, Criteria1:="0%"
    ActiveSheet.Range("$A$1:$R$" & ur).Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Cells.Select
    Selection.RowHeight = 15
    Cells.Select
    Cells.EntireColumn.AutoFit
    Sheets("Foglio2").Select
    Sheets("Foglio2").Name = "EMAIL"
    Columns("A:C").Select
    Selection.Delete Shift:=xlToLeft
    Sheets("totale").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Columns("E:E").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'email'!C[-4],1,0)"
    Range("E2").Copy Destination:=Range("E2:E" & Range("A" & Rows.Count).End(xlUp).Row)
    Columns("E:E").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("E1").Select
    ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=5, Criteria1:="<>#N/D"

   
End Sub


questo è il file

https://drive.google.com/file/d/0B2rmVFc8x3cUSHJEaWJYVWJtUG8/view?usp=sharing

grazie a tutti
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Sponsor
 

Re: AUTOFILTER CHE NON FUNZIONA

Postdi mirmidone21 » 15/06/16 11:53

visto che nessuno mi ha risposto, mi rispondo da solo, sperando che possa essere di aiuto anche per altri.
a quanto pare nelle macro non viene riconosciuto #N/D, presumo sia il simbolo # a mandare in tilt la macro.
ho risolto in questo modo, ho modificato il CERCA.VERT inserendo la funzione SE.ERRORE ed ho successivamente impostato l'AUTOFILTER col valore "errore":

Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],'email'!C[-4],1,0),""errato"")"

Codice: Seleziona tutto
ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=5, Criteria1:="<>errato"


saluti a tutti

p.s.: c'è un metodo per ottimizzare una macro, evitando ridondanze?
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: AUTOFILTER CHE NON FUNZIONA

Postdi Anthony47 » 15/06/16 14:00

Eh, tu sei troppo veloce per i miei ritmi...
Comunque avresti dovuto usare la terminologia in Inglese:
Codice: Seleziona tutto
    ActiveSheet.Range("$A$1:$R$" & ur).AutoFilter Field:=5, Criteria1:="<>#N/A"

Per evitare le ridondanze... basta eliminare le cose superflue. Tuttavia io sostengo che una macro che fa quello che l'utente si aspetta e' gia' perfetta, e in genere il tempo che si impiega a ottimizzarne una e' superiore al tempo che il PC risparmiera' a eseguirla nei prossimi 5 anni (parlo di una macro gia' scritta, non di una da sviluppare).
Ti suggerisco di leggere l'help on line relativo a ogni metodo o proprieta' che usi (seleziona la voce, premi F1) e guardare i suggerimenti che lì vengono dati; prova a variare pezzi del tuo codice (anche "al volo", durante l'esecuzione passo passo della macro; il passo-passo si fa con F8) e vedi l'effetto che fa.
Vedrai che col tempo e un po' di esperienza certe cose ti verranno naturali.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: AUTOFILTER CHE NON FUNZIONA

Postdi mirmidone21 » 15/06/16 14:28

ti ringrazio x la risposta, hai ragione, sono stato troppo impaziente.
alla fine la differenza era una "D" :)
l'help lo leggo quasi sempre prima di scrivere nel forum, ma ti garantisco che serve a ben poco per chi come me non è pratico di VBA
la maggior parte delle cose le ho imparate quà, ad incominciare dall' F8 "esegui istruzione".
grazie di tutto, alla prossima
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: AUTOFILTER CHE NON FUNZIONA

Postdi Anthony47 » 17/06/16 01:34

Ti assicuro che l'help on line del vba e' una miniera di informazioni, che a me ha insegnato tanto.

Insisti, vedrai che fa effetto anche con te!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "AUTOFILTER CHE NON FUNZIONA":


Chi c’è in linea

Visitano il forum: Marius44 e 43 ospiti