+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: Filtro automatico tabella da valore cella

  1. #1
    oz85 non è in linea Novello
    Post
    28

    Filtro automatico tabella da valore cella

    Ciao a tutti!

    Vi scrivo per chiedervi aiuto relativo ad una tematica abbastanza comune ma che ha tante sfaccettature, lo sviluppo di una macro che preveda l'applicazione di un filtro in una tabella in base al valore contenuto in una cella. Come potete vedere dalla foto allegata, vorrei inserire un valore numerico nella cella E1 per poi filtrare la colonna C con tale contenuto.

    Purtroppo oltre quanto scritto qui sotto non riesco ad andare... Qualcuno può aiutarmi? Grazie!

    Sub VISUALIZZA_CAVI()
    '
    ' VISUALIZZA_CAVI Macro
    '

    '
    Range("E1").Select
    Selection.Copy
    ActiveSheet.ListObjects("Tabella1").Range.AutoFilt er Field:=3, Criteria1:= _
    Array("T.P. 0___T.A.3010930", "T.P. 3010930___T.A.0", _
    "T.P. 3010930___T.A.3000028", "T.P. 3010930___T.A.3010765", _
    "T.P. 3010930___T.A.3010851", "T.P. 3010930___T.A.3010936"), Operator:= _
    xlFilterValues
    Range("A377").Select
    End Sub



    https://mega.nz/#!DRUFXSIC!tbk3JoN4N...o0KsZwcjaQjJa8

  2. #2
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Buona sera, oz85.
    hai provato con il "Registratore di macro"?

    Voglio dire, potresti:
    - attivare la Funzione Filtro su tutte le intestazioni; nel tuo esempio Range A9:F9
    - attivare il "Registratore di macro"
    - attivare il Filtro in Cella "C9"
    - Filtri per testo
    a questo punto, puoi scegliere se eseguire il Filtro su:
    - Termina con...
    oppure
    - Contiene...
    - nel Campo definito da "Filtro1", inserisci il Valore che desideri Filtrare

    Vedrai che il Codice che ti verrà proposto sarà decisamente più compatto rispetto a quello che avevi costruito tu; dovrai semplicemente sostituire il Valore che è stato registrato con:
    - Cells(1, 5).Value




    A disposizione.

    Buona serata.

    Giuseppe

  3. #3
    oz85 non è in linea Novello
    Post
    28
    Ciao Giuseppe e grazie per la disponibilità!

    Quello che vorrei fare è che un utente possa cliccare sulla cella E1 dove sceglierà un valore da un elenco a cascara, cliccando sul tasto VISUALIZZA CAVI la macro copierà il valore in cella E1 (quindi sempre diverso) e lo filtrerà nella tabella (in particolare nel filtro situato in cella C9. Il mio problema è che registrando la macro il valore copiato è sempre quello non il valore variabile.

    Quote Originariamente inviato da GiuseppeMN Visualizza il messaggio
    Buona sera, oz85.
    hai provato con il "Registratore di macro"?

    Voglio dire, potresti:
    - attivare la Funzione Filtro su tutte le intestazioni; nel tuo esempio Range A9:F9
    - attivare il "Registratore di macro"
    - attivare il Filtro in Cella "C9"
    - Filtri per testo
    a questo punto, puoi scegliere se eseguire il Filtro su:
    - Termina con...
    oppure
    - Contiene...
    - nel Campo definito da "Filtro1", inserisci il Valore che desideri Filtrare

    Vedrai che il Codice che ti verrà proposto sarà decisamente più compatto rispetto a quello che avevi costruito tu; dovrai semplicemente sostituire il Valore che è stato registrato con:
    - Cells(1, 5).Value




    A disposizione.

    Buona serata.

    Giuseppe

  4. #4
    oz85 non è in linea Novello
    Post
    28
    In particolare la macro che viene fuori è la seguente:

    Sub VISUALIZZA_CAVI()
    '
    ' VISUALIZZA_CAVI Macro
    '

    '
    Range("E1").Select
    Selection.Copy
    ActiveSheet.ListObjects("Tabella1").Range.AutoFilt er Field:=3, Criteria1:= _
    "=3010930", Operator:=xlAnd
    ActiveWindow.SmallScroll Down:=-21
    Range("Tabella1[[#Headers],[N]]").Select
    End Sub

    Precisamente qui prende come valore non il valore cella ma il testo in esso contenuto nel momento in cui si registra la macro
    Criteria1:= _
    "=3010930",

  5. #5
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Buona sera, oz85.
    Il "Registratore di macro", con l'opzione "Termina con", dovrebbe proporti una cosa di questo genere:
    codice:
    ActiveSheet.Range("$A$9:$F$18").AutoFilter Field:=3, Criteria1:="=*3010930", Operator:=xlAnd
    a questo punto, come ti avevo consigliato nella Risposta precedente, dovrai modificare il Codide VBA in:
    codice:
    ActiveSheet.Range("$A$9:$F$18").AutoFilter Field:=3, Criteria1:="=*" & Cells(1, 5).Value, Operator:=xlAnd
    Il Codice VBa che hai riportato nella tua risposta precedente prevede un Filtro "=3010930"; considera bene questa scelta perchè il Filtro si applicherebbe solo sui Record perfettamente uguali al Valore richiesto.




    A disposizione.

    Buona serata.

    Giuseppe

  6. #6
    oz85 non è in linea Novello
    Post
    28
    Capito! L'unica cosa che non mi è chiara è che se propongo la scelta sul filtro "Termina con" i valori che si trovano all'inizio? vengono presi?

  7. #7
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Buona sera, oz85.
    @oz85, scrive:
    ... L'unica cosa che non mi è chiara è che se propongo la scelta sul filtro "Termina con" i valori che si trovano all'inizio? vengono presi?
    No, vengono considerati solo i Record che terminano con il Valore indicato in Cella "E1"
    Questo è il motivo perchè, nella mia prima Risposta avevo prospettato l'opzione:
    - Contiene...
    Con questa opzione vengono considerati tutti i Record all'interno dei quali sia presente il Valore richiesto.



    A disposizione.

    Buona serata.

    Giuseppe

  8. #8
    oz85 non è in linea Novello
    Post
    28
    Buongiorno, ho provato la macro questa mattina ma non va.... questo è quanto ho ora:

    Sub VISUALIZZA_TERMINALI()
    '
    ' VISUALIZZA_TERMINALI Macro
    '

    '
    Range("E1").Select
    Selection.Copy
    Range("Tabella1[[#Headers],[FILTRO1]]").Select
    ActiveSheet.Range("$A$9:$F$18").AutoFilter Criteria1:="=*" & Cells(1, 5).Value, Operator:=xlAnd
    End Sub

  9. #9
    GiuseppeMN non è in linea Scribacchino
    Post
    759
    Ovviamente puoi procedere come meglio credi, ma mi sa che ti stai complicando la vita.

    Quello che ti avevo proposto precedentemente era:
    codice:
     ActiveSheet.Range("$A$9:$F$18").AutoFilter Field:=3, Criteria1:="=*" & Cells(1, 5).Value & "*", Operator:=xlAnd
    Senza:
    codice:
    Range("E1").Select
    Selection.Copy
    Range("Tabella1[[#Headers],[FILTRO1]]").Select

    Giuseppe

  10. #10
    oz85 non è in linea Novello
    Post
    28
    Ho modificato il tutto ed ho questa macro:

    Sub VISUALIZZA_TERMINALI()
    '
    ' VISUALIZZA_TERMINALI Macro
    '

    '
    ActiveSheet.Range("$A$9:$F$18").AutoFilter Criteria1:="=*" & Cells(1, 5).Value & "*", Operator:=xlAnd
    End Sub


    Cliccando mi da quest'errore:
    Errore di run time 1004

    Errore nel metodo AutoFilter per la classe Range

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi