È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Filtro su più colonne

  • Messaggi
  • OFFLINE
    Teomat_035
    Post: 1
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 03/10/2017 16:58
    Ciao a tutti, mi sono iscritto al forum perchè ho visto molte discussioni e credo mi possiate aiutare, nelle discussioni ho visto e anche trovato quello che mi potrebbe servire, ossia una combobox, ma non so come personalizzarmela ma sopra tutto crearla, visto che sono una chiavica in excel.

    Ora vi spiego cosa devo fare:

    ho un file allievi di una associazione, devo filtrare in 5 colonne un corso specifico, così da avere solo gli allievi che frequentano quel corso.

    Allego il file senza dati, le colonne dove devo fare il filtro sono Q_R_S_T_U evidenziate in giallo.

    Spero mi possiate aiutare anche con una soluzione più semplice.
    grazie
    [Modificato da Teomat_035 03/10/2017 16:59]
  • OFFLINE
    alfrimpa
    Post: 3.479
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 03/10/2017 19:46
    Ciao Matteo

    Ma hai provato ad usare il menù Dati, Filtro sulle colonne?

    Allegare un file vuoto è inutile.

    Devi allegarne uno con i dati (non sensibili) e sulla base di questi mostrare il risultato che si vuole ottenere.

    Alfredo
  • OFFLINE
    Teomat_035
    Post: 1
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 03/10/2017 20:26
    Ciao alfrimpa00,hai ragione [SM=x423023]
    Il file contiene per ogni colonna un filtro, ma quello che serve a me è una ricerca nelle colonne corsi che sono 5.

    Il file è vuoto dei dati sensibili ma ogni cella corso ha un collegamento alla lista posta sotto la tabella..

    Appena riesco ne carico uno con dei dati pre inseriti..
  • OFFLINE
    Teomat_035
    Post: 2
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 04/10/2017 08:26
    Buongiorno,
    come promesso carico il file con i dati inseriti.

    Ho evidenziato un corso es. Canto 2 presente in 4 colonne diverse, quello che mi serve è fare un filtro che mi trovi gli iscritti e che mi nasconda quelli che non frequentano quel corso.

    spero possiate darmi un aiuto

    grazie.
    [Modificato da Teomat_035 04/10/2017 08:33]
  • OFFLINE
    alfrimpa
    Post: 3.490
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 05/10/2017 11:29
    Ciao Matteo e perdona il ritardo di questa mia risposta.

    La struttura della tua tabella non consente di utilizzare il filtro dati per cui ho utilizzato la macro che vedi sotto per estrarre i dati dal foglio1 e metterli sul foglio "Estrazione Dati".

    Tu non devi fare null'altro che scrivere il corso in B2 su "Estrazione Dati" e cliccare sul pulsante.

    Questo è il codice (che va completato anche con le altre colonne attualmente vuote ma ci vuole un attimo).

    vb
    Sub Estrai()
    Dim ur As Long
    Dim rng As Range
    Dim cel As Range
    Set rng = Sheets("Foglio1").Range("X6:AB39")
    Sheets("Estrazione Dati").Range("A6:W1000").ClearContents
    For Each cel In rng
    ur = Sheets("Estrazione Dati").Cells(Rows.Count, 1).End(xlUp).Row
        If cel.Value = Sheets("Estrazione Dati").Range("B2").Value Then
            Sheets("Estrazione Dati").Cells(ur + 1, 1).Value = Sheets("Foglio1").Cells(cel.Row, "a").Value
            Sheets("Estrazione Dati").Cells(ur + 1, 2).Value = Sheets("Foglio1").Cells(cel.Row, "b").Value
            Sheets("Estrazione Dati").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(cel.Row, "c").Value
        End If
    Next cel
    End Sub
    


    Ti allego il file

    Fai sapere.

    Alfredo
  • OFFLINE
    Teomat_035
    Post: 3
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 05/10/2017 14:42
    Grazie Alfredo,
    è proprio quello che mi serviva, sei un grande.
    Adesso devo solo replicarlo nel mio file e sperare di non fare casini nell'aggiungere altre righe, iusto per non fare casini, ho da chiederti due cose:

    devo aggiungere righe di programma andando in successione con
    [IMG]
    Sheets("Estrazione Dati").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(cel.Row, "c").Value
    Sheets("Estrazione Dati").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(cel.Row, "D").Value
    Sheets("Estrazione Dati").Cells(ur + 1, 3).Value = Sheets("Foglio1").Cells(cel.Row, "E").Value
    [/IMG]
    Ecc. Giusto?

    L'altra domanda é, c'è modo di lasciare attiva la macro sul pulsante? perchè ad ogni riavvio la devo assegnare.

    grazie
    Matteo
  • OFFLINE
    alfrimpa
    Post: 3.491
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 05/10/2017 17:12
    Non è necessario scrivere per tutte le colonne.

    Basta un ciclo che le "spazzoli" tutte.

    Ora sono fuori; domani ti scrivo la macro

    La questione del pulsante mi sembra strana.

    Una assegnata la macro (e questo l'ho fatto io) non devi fare altro
    [Modificato da alfrimpa 05/10/2017 17:14]

    Alfredo
  • OFFLINE
    Teomat_035
    Post: 4
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 06/10/2017 10:15
    Ciao Alfredo
    ho personalizzato la tua macro e funziona alla perfezione, anche con l'aggiunta di più colonne. Il problema è che mi restituisce i dati alla riga 900 circa, come faccio a far si che me li restituisca alla riga 1 come nel tuo file?

    di seguito la macro modificata con evidenziato le mofiche apportate.


    Sub Estrai()
    Dim ur As Long
    Dim rng As Range
    Dim cel As Range
    Set rng = Sheets("Soci Allievi").Range("Q7:U600")
    Sheets("Estrazione Dati").Range("A7:U1000").ClearContents
    For Each cel In rng
    ur = Sheets("Estrazione Dati").Cells(Rows.Count, 1).End(xlUp).Row
    If cel.Value = Sheets("Estrazione Dati").Range("B2").Value Then
    Sheets("Estrazione Dati").Cells(ur + 1, 1).Value = Sheets("Soci Allievi").Cells(cel.Row, "a").Value
    Sheets("Estrazione Dati").Cells(ur + 1, 2).Value = Sheets("Soci Allievi").Cells(cel.Row, "b").Value
    Sheets("Estrazione Dati").Cells(ur + 1, 3).Value = Sheets("Soci Allievi").Cells(cel.Row, "c").Value
    End If
    Next cel
    End Sub

    grazie
    Matteo
  • OFFLINE
    alfrimpa
    Post: 3.492
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 06/10/2017 10:32
    Ciao Matteo

    Vai a vedere sul foglio "Estrazione dati" se c'è qualcosa in A900; se si cancellalo.

    Diversamente dovrei vedere il file.

    Alfredo
  • OFFLINE
    Teomat_035
    Post: 5
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 06/10/2017 11:49
    Ciao Alfredo,
    Scusa se sono pedante, ma sono zero in queste cose, pur lavorando in ambito programmazione.

    Ti inoltro il file in originale con i fogli non interessati in bianco e i dati sensibili modificati. Ho cancellato tutte le righe della tabella ma niente, mi importa i dati sempre nelle righe attorno alla 900.

    spero tu riesca a dirmi dove posso aver sbagliato nel personalizzarmi la macro.

    grazie
    Matteo
    [Modificato da Teomat_035 06/10/2017 11:51]
  • OFFLINE
    alfrimpa
    Post: 3.493
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 06/10/2017 13:44
    Ciao Matteo il problema è nella struttura "tabella" nel foglio "Estrazione dati".

    Ora sarebbe lungo spiegare il perchè ma eliminala e vedrai che la macro funziona.

    Poi, se vuoi, cercherò di spiegare ma se tu non sai nulla di VBA sarà un po' dura.

    Alfredo
  • OFFLINE
    Teomat_035
    Post: 6
    Registrato il: 03/10/2017
    Città: MILANO
    Età: 47
    Utente Junior
    2007
    00 09/10/2017 13:59
    Ciao Alfredo,
    Scusa il ritardo nella risposta. Dopo l'ultimo tuo consiglio sono riuscito a sistemare e far funzionare la ricerca. Ti ringrazio moltissimo, senza il tuo aiuto non ne sarei mai uscito.

    Matteo