Excel e gli applicativi Microsoft Office Gestire filtri senza risultati

LoginRegistrati
Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
  • Autore
    Articoli
  • #19610 Risposta
    Lucastar
    Lucastar
    Partecipante
      4 pts

      Ciao a tutti,

      mi sto arrovellando per un problema al quale non riesco a trovare una soluzione efficace

      ho un elenco che verrà filtrato 4 volte e i relativi risultati copiati. l'ho realizzato col registratore di macro e funziona.

      il problema è che può capitare che non ci siano valori da filtrare. in questo caso la macro va in loop e si pianta oltre a generare un file enorme. c'è un modo semplice per evitarlo?

      io stavo pensando di fare un controllo preliminare prima filtrare i dati. se ci sono i valori da filtrare allora procede altrimenti salta al filtro successivo.

      ho provato con le funzioni countifs, match e find ma non sono stato in grado di farli funzionare.

      a compicare le cose (per me) è che ogni filtro ha 3 termini da cercare.

      allego parte del codice

      ' primo filtro
      Selection.AutoFilter
              ActiveSheet.Range("$A$1:$N$419").AutoFilter Field:=7, Criteria1:=Array("20" _
              , "23", "124"), Operator:=xlFilterValues
          Range("J4:K4").Select
          Range(Selection, Selection.End(xlDown)).Select
          Selection.Copy
          Sheets("Elenco passaggi").Select
          Range("A3").Select
          ActiveSheet.Paste
          Sheets("Master").Select
          ActiveWindow.SmallScroll Down:=-27
      
      'secondo filtro
                  ActiveSheet.Range("$A$1:$N$419").AutoFilter Field:=7, Criteria1:=Array("21" _
              , "125", "136"), Operator:=xlFilterValues   
          Range("J4:K4").Select
          Range(Selection, Selection.End(xlDown)).Select
          Application.CutCopyMode = False
          Selection.Copy
          Sheets("Elenco passaggi").Select
          Range("C3").Select
          ActiveSheet.Paste
          Sheets("Master").Select
      
      'terzo filtro
             ActiveSheet.Range("$A$1:$N$419").AutoFilter Field:=7, Criteria1:=Array("126" _
              , "128", "130"), Operator:=xlFilterValues      
          Range("J4:K4").Select
          Range(Selection, Selection.End(xlDown)).Select
          Application.CutCopyMode = False
          Selection.Copy
          Sheets("Elenco passaggi").Select
          Range("E3").Select
          ActiveSheet.Paste
          Sheets("Master").Select
          ActiveWindow.SmallScroll Down:=-18
      
      'quarto filtro
             ActiveSheet.Range("$A$1:$N$419").AutoFilter Field:=7, Criteria1:=Array("22" _
              , "25", "127"), Operator:=xlFilterValues     
          Range("J4:K4").Select
          Range(Selection, Selection.End(xlDown)).Select
          Application.CutCopyMode = False
          Selection.Copy
          Sheets("Elenco passaggi").Select
          Range("G3").Select
          ActiveSheet.Paste
      

      Grazie

      #19617 Risposta
      Luca73
      Luca73
      Partecipante
        27 pts

        Ciao 

        potresti allegare il file con il data base e la macro? eventualmente sostituisci i dati sensibili.

        Ciao

        Luca

        #19618 Risposta

        vecchio frac
        Senior Moderator
          171 pts

          Lucastar ha scritto:

          oltre a generare un file enorme

          Questo non capisco come possa avvenire. Non ci sono migliaia e migliaia di record copiati o trasferiti.

          #19714 Risposta
          Lucastar
          Lucastar
          Partecipante
            4 pts

            Scusate il ritardo nella risposta ma sono all'estero.

            ho ripulito il mio file e mantenuto solo la parte che interessa.

            per far partire la selezione occorre cliccare sul pulsante Master 1 e caricare il file prova.csv, che pure allego, dove volutamente o omesso alcuni dati (caso reale).

            come potete notare, in questo caso, impiega tanto a filtrare e il file diventa enorme (dopo la mia prova è diventato 8 MB!)

            durante l'utilizzo, questa funzione la faccio partire più volte (ci sono più fogli " Master" e relativi pulsanti)

            per ovviare al problema io ho inserito due flag (I e II, solitamente i gruppi che potrebbero non essere presenti) ma questo presuppone saper in anticipo e io vorrei che fosse riconosciuto in automatico

            Allegati:
            You must be logged in to view attached files.
            #19739 Risposta

            DeletedUser
              11 pts

              Lucastar ha scritto:

              ho un elenco che verrà filtrato 4 volte e i relativi risultati copiati. l'ho realizzato col registratore di macro e funziona.

              Scusa, cosa significa: filtrato 4 volte?

              Devi chiarire sia lo 'scenario' sia lo 'scopo' di ciò che stai facendo e del perché, ovvero qual'è l'obiettivo finale da raggiungere.

              Dici che  'funziona' ma in realtà non funziona visto il problema.

               

              Ho guardato il file TEST.XLSM e ti dico subito che PRIMA va 'azzerato' e ripulito di tutti quei modulo vuoti che non c'entrano nulla e poi lo riposti senza dati e, come ho scirtto ospra, devi spiegare cosa dovrebbe fare la macro.

              Cerca di capire, ma indovinarlo è davvero difficile.  

              Ho copiato i dati dal tuo file ad un nuovo file. Risultato: 50 kb!
              Questo significa che il tuo file contiene un sacco di sporcizia e, a causa delle numerose celle unite, non si può ripulire con strumenti appositi, come questo:

              Excel Swiss Knife – take your Excel to the next level

              Cos’è Excel Swiss Knife

               

               

              #19741 Risposta
              Lucastar
              Lucastar
              Partecipante
                4 pts

                L'operazione che devo fare è questa:

                da un file che può essere un csv oppure un txt devo ricavare da 1 a 4 colonne "pulite" da mettere nel foglio "Elenco passaggi" con questi criteri:

                - nel caso in cui nella cella A1 del file caricato ci sia scritto Generato e poi una data e un orario allora:

                - in A:B di elenco passaggi i valori J:K filtrati con 23, 124 e 20 nella colonna G del foglio "Master1" (dove ho caricato e incolonnato il file)

                - in C:D i valori 136, 125, 21

                - in E: F i valori 136, 130, 128

                - in G:H i valori 25, 127, 22

                 

                nel caso in cui nella cella B1 del file caricato ci sia scritto Digitech Master allora:

                - in A:B di elenco passaggi i valori B:C filtrati con 23, 108 e 20 nella colonna A del foglio "Master1"

                - in C:D i valori 136, 107, 21

                - in E: F i valori 136, 130, 128

                - in G:H i valori 25, 109, 22

                 

                Tu come faresti con strumenti standard di Excel 2007?

                #19769 Risposta

                DeletedUser
                  11 pts

                  Lucastar ha scritto:

                  Tu come faresti con strumenti standard di Excel 2007?

                  Nel tuo caso io userei ADODB.

                  C'è un ottimo tutorial nel blog di @vecchio frac:
                  https://www.excelvba.it/forumexcel/excel-e-ado-scrittura-lettura-dati-da-tabelle-excel/

                  Una volta impostata la struttura del codice, basta cambiare la query per importare i dati dal file CSV.

                   

                  N.B. Però ti avverto che le celle unite sono nemiche di qualsiasi elaborazione VBA si faccia.
                  Meglio evitarle come la peste. Caso mai le si creano dopo l'elaborazione.

                   

                   

                   

                  #23211 Risposta
                  Lucastar
                  Lucastar
                  Partecipante
                    4 pts

                    Ciao a tutti,

                    ho provato con ADODB come suggerito ma non fa al caso mio, devo avere la compatibilità con diversi PC che non hanno la possibilità di scaricare nuove funzionalità.

                    Qualcuno ha qualche altra idea di come fare al risolvere il mio problema?

                    Grazie

                  LoginRegistrati
                  Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
                  Rispondi a: Gestire filtri senza risultati
                  Gli allegati sono permessi solo ad utenti REGISTRATI
                  Le tue informazioni:



                  vecchio frac - 2750 risposte

                  albatros54
                  albatros54 - 996 risposte

                  patel
                  patel - 889 risposte

                  Marius44
                  Marius44 - 766 risposte

                  Luca73
                  Luca73 - 652 risposte