Excel e gli applicativi Microsoft Office Funzione FILTRO (Excel 365)

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #51605 Score: 0 | Risposta

    vecchio frac
    Senior Moderator
      272 pts

      Stavo realizzando una cosa al volo, mescolando Excel e Word per inserire tabelle di Excel in alcune celle di un tabellone di Word in diversi file. Mi serviva un modo rapido e indolore per filtrare sul posto l'elenco Excel originale, basandomi su un campo id, quindi copiare i dati filtrati nell'altra applicazione.

      Non avevo voglia di ricordare tutto l'ambaradan del filtro automatico e del filtro avanzato... e poi volevo provare qualche brivido nuovo    per farla breve ho scoperto, studiato e applicato la nuova funzione FILTRO per questo Excel 365.

      Gianfranco sara' fiero di me: =FILTRO(intervallo senza header, criterio[, valore se nullo]). Ok, proviamo... funziona alla grande. Adesso questa bella formulina la mettiamo nel mio bel codice VBA e tricche tracche, lavoro finito.

      Tutto vero? Macche'   

      Tentativi:

      Range(xxx).Formula = "=FILTRO(A2:C50, A2:A50=1)"
      Risultato ---> #NOME? e la formula nella cella xxx viene trasformata in =@FILTRO(A2:D17;@A2:A17=2000) (ma da dove salta fuori quel @? documentati, documentati... anche Excel mi dice cos'e', ma bene... dynamic array   )
      Togli la seconda chiocciola, caprone! 
      =@FILTRO(A2:C50;A2:A50=2000)
      Risultato: qualcosa compare... ma solo un "2000" nella prima cella. E il resto della tabella filtrata?
      Mumble mumble... a un certo punto nell'elenco oggetti compare una proprieta', Formula2... chissa'...
      Riproviamo con VBA...
      Range(xxx).Formula = "=FILTRO(A2:C50;A2:A50=1)"
      Risultato ---> Beep! Errore definito dall'applicazione o dall'oggetto. Uff, il punto e virgola...
      Range(xxx).Formula2 = "=FILTRO(A2:C50,A2:A50=1)"
      Risultato: #NOME?   Grrrr... E se non gli piacesse la parola FILTRO?   
      Range(xxx).Formula = "=FILTER(A2:C50,A2:A50=1)"
      Risultato: in cella la formula riceva una chiocciola e mostra solo un "2000" (=@FILTRO(A2:A50;A2:A50=2000))
      Esasperato... ultimo tentativo....
      Range(xxx).Formula2 = "=FILTER(A2:C50,A2:A50=1)"
      Bingo!    

      Ma che fatica ragazzi   

      Morale? codice VBA perfettamente funzionante, filtro dinamico perfettamente riuscito per ogni singolo id della tabella, aggancio volante a Word senza problemi, recupero e incollaggio dei dati con salvataggio del file finale perfettamente riuscito. Il mio capo mi ha chiesto se ne valeva la pena quando potevo copiare e incollare le tabelle a mano... ok vabbe'... non c'e' paragone... prima di tutto ho imparato qualcosa di nuovo e poi a lavorare sul reale in pochi minuti il lavoro finito quando avrei messo piu' tempo a filtrare i dati in Excel, copiare il range, aprire il Word giusto, raggiungere il tabellone, svuotarlo, reinserire le righe necessarie, incollare i dati, riformattare la schifezza, salvare e chiudere e passare al prossimo intervallo/file.

      So che solo voi mi capite   

      #51606 Score: 0 | Risposta

      gianfranco55
      Partecipante
        91 pts

        ciao

        certo che sono fiero di te

        ti sto contagiando con le formule  

         

        comunque sai quante chioccioline tolgo io al giorno?

        se apro un file di una versione inferiore che abbia una formula matriciale

        magicamente spuntano le chioccioline che altro non sono che la bella copia delle grafe

        ora delle volte (rare) le usiamo anche nel 365 per bloccare l'espansione

        in pratica ti rendono solo il primo risultato

         

         

        #51607 Score: 0 | Risposta

        scossa
        Partecipante
          37 pts

          vecchio frac ha scritto:

          Range(xxx).Formula = "=FILTRO(A2:C50, A2:A50=1)" Risultato ---> #NOME?

          Forse Range(xxx).FormulaLocal = "=FILTRO(A2:C50, A2:A50=1)"

          Io, per comodità, scrivo la formula =FILTRO(A2:C50, A2:A50=1) in una cella e, nella finestra immediata digito

          ?ActiveCell.Formula così so il nome originale della formula.

          #51608 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            gianfranco55 ha scritto:

            comunque sai quante chioccioline tolgo io al giorno?

            scossa ha scritto:

            Forse Range(xxx).FormulaLocal

            Mi sembrava di aver provato. Mi stavo incasinando tra locale e non locale, e comunque preferisco la versione inglese   

            scossa ha scritto:

            così so il nome originale della formula

            Sì ma non l'avevo mai provata e mi sono emozionato, sbagliando... avrei dovuto pensarci prima: se SOMMA diventa SUM nel codice e CONTA.VALORI diventa COUNTA, cosa che faccio abitualmente, era ovvio che doveva funzionare anche per FILTRO (una lampadina inconscia comunque si è accesa, se mi è venuto in mente di farlo).

            In ogni caso non si finisce davvero mai di aggiungere mattoncini. Adesso devo pensare a una applicazione pratica delle LAMBDA   

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: Funzione FILTRO (Excel 365)
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: