Automatizzare l'esportazione di file filtrati

Anonimo
2011-09-03T09:07:01+00:00

Buon giorno,

volevo sapere se esiste la possibilità di automatizzare, con un semplice click ad un pulsante, una serie di passaggi che devo ripetere quotidianamente per esportare dei dati filtrati da un foglio excel.

Con un esempio cerco di chiarire il concetto. Dispongo di un file excel composta da quattro fogli e l'automatismo va applicato solo sui dati del Foglio1.

Colonne della tabella che non sono necessariamente contigue e si trovano alla riga 9:

Codice     Descrizione     DatoAnnoN     DatoAnnoN+1     DatoAnnoN+2     Parametro

  xxx               Mele                 100                    200                       150                            1

  xxy               Banane            75                                                                                       1

  xxz               Pere                 125                                                   300                           1

  xyx             Albicocche                                                                                                    0

  xyy              Fragole                                        115                        135                           1

  xyz              Ciliege              65                         90                                                          1

  xzx              Angurie                                                                          25                           1

  xzy               Arance             26                                                         72                           1

  xzz              

N.B. la colonna Parametro contiene una formula che attribuisce il valore 1 solo se almeno uno dei campi DataAnnoN, DataAnnoN+1 e DatoAnnoN+2, nella rispettiva riga, ha un valore diverso da vuoto. Le colonne Codice e Descrizione sono di tipo testuale. Tutte le intestazioni delle colonne hanno impostato il Filtro Automatico.

Le operazioni che devo compiere per produrre un file idoneo alle mie esigenze sono le seguenti:

  1. Applicare il filtro, valore 1, se già non impostato, nella colonna parametro per escludere le righe con valore 0;
  2. copiare l'area da Codice a DatoAnnoN per tutte le righe rimaste visualizzate;
  3. aprire un nuovo file excel e nella seconda riga incollare sul foglio1 la precedente copiatura;
  4. eliminare la colonna Descrizione perchè non utile ai fini del risultato finale;
  5. eliminare le righe del nuovo foglio1 che non hanno entrambi i valori sulle rispettive colonne, inoltre elimino delle righe predeterminate (quelle con valore sulla prima colonna xyz e xzy) anche se hanno i valori in entrambe le colonne;
  6. elimino la prima riga in alto, elimino il foglio2 e il foglio3 del nuovo file excel e apro la finestra salva con come scegliendo nella casella tipo file il formato .csv

Questa procedura viene applicata su file excel dalla versione XP a quella 2010.

Grazie a quanti contribuiranno, anche in maniera parziale, a fornire un aiuto per semplificare la procedura.

Cordiali saluti.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

8 risposte

Ordina per: Più utili
  1. Anonimo
    2011-09-04T10:29:53+00:00

    Cerco di riepilogare:

    Dati iniziali del foglio1 di un file excel costituito da più fogli

    Codice     Descrizione     DatoAnnoN     DatoAnnoN-1     DatoAnnoN-2     Parametro

      xxx               Mele                 100                    200                       150                            1

      xxy               Banane            75                                                                                       1

      xxz               Pere                 125                                                   300                           1

      xyx             Albicocche                                                                                                    0

      xyy              Fragole                                        115                        135                           1

      xyz              Ciliege              65                         90                                                          1

      xzx              Angurie                                                                          25                           1

      xzy               Arance             26                                                         72                           1

      xzz              Ananas                                                                                                          0

      yxx            Pompelmi                                       80                            35                           1

    Dopo l'applicazione del filtro valore 1 nella colonna Parametro spariscono le righe Albicocche e Ananas. L'esigenza di questo foglio,condiviso con altri operatori, è mostrare tutti i prodotti con la presenza di almeno un valore nelle tre colonne C, D ed E.

    Poichè i dati delle colonne Codice e DatoAnnoN vanno caricati in un altro software si propone una nuova esigenza, creare un file .csv (formato richiesto dall'applicativo esterno) per importare i dati. Questo applicativo richiede la presenza delle 2 colonne predette senza righe vuote (nell'esempio vanno eliminate le righe Fragole, Angurie e Pompelmi dopo l'applicazione del primo filtro).

    Attualmente il problema viene risolto nel seguente modo:

    dopo aver filtrato i dati del file excel iniziale con il valore 1 nella colonna Parametro eseguo:

    1) copio i valori compresi nell'area da Codice a DatoAnnoN e li riporto in un altro file excel nel foglio1, quindi partendo dal mio esempio ho:

    Codice     Descrizione     DatoAnnoN     

      xxx               Mele                 100                   

      xxy               Banane            75                     

      xxz               Pere                 125                                                   

      xyy              Fragole                                        

      xyz              Ciliege              65                        

      xzx              Angurie                                                                          

      xzy               Arance             26                    

      yxx            Pompelmi  

    1. elimino la colonna Descrizione perchè non richiesta per l'importazione dei dati; inoltre come da te individuato sopra elimino le righe senza un valore nella colonna DatoAnnoN. Questo l'ottengo con la selezione dei dati e l'applicazione del filtro automatico. Poi posiziono il cursore nella colonna DatoAnnoN e filtro tutti le celle Non Vuote. Copio i dati filtrati e applico incolla speciale, valore nel foglio2;
    2. elimino il foglio1 e il foglio3, e salvo il foglio2 con il formato .csv utile all'importazione dei dati.

    Quello che chiedevo se esiste un modo per automatizzare i punti 1, 2 e 3 partendo dal file iniziale di excel magari cliccando un pulsante o un'icona. Non so se con macro o VBA.

    Saluti.

     

    Registrando una macro mentre fai quanto hai esposto.... ;-) Puoi poi assegnare un pulsante di scelta rapida alla tua macro, vedi il punto 5 qui: http://www.maurogsc.eu/excel/xlsdoveinserirecodice.aspx

    Se invece vuoi una cosa *già fatta* ma che dovrai comunque adattare al tuo contesto:

    Public Sub m()

        Dim csv As Workbook

        Dim sh As Worksheet

        Dim lRiga As Long

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        With sh

            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row

            .Range("A1").AutoFilter Field:=6, Criteria1:="1"

            .Range("A1").AutoFilter Field:=3, Criteria1:="<>"

            .Range("A1:A" & lRiga & ",C1:C" & lRiga).SpecialCells(xlCellTypeVisible).Copy

            Set csv = Workbooks.Add(xlWBATWorksheet)

            csv.Worksheets(1).Range("A2").PasteSpecial

            Application.DisplayAlerts = False

            csv.SaveAs Filename:="C:\tuaCartella\NomeFile.csv", FileFormat:=xlCSV

            csv.Close

            Application.DisplayAlerts = True

            .Range("A1").AutoFilter

        End With

        Set csv = Nothing

        Set sh = Nothing

    End Sub

    Al link indicato prima trovio come fare per utilizzare le macro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-09-04T08:42:58+00:00

    Cerco di riepilogare:

    Dati iniziali del foglio1 di un file excel costituito da più fogli

    Codice     Descrizione     DatoAnnoN     DatoAnnoN-1     DatoAnnoN-2     Parametro

      xxx               Mele                 100                    200                       150                            1

      xxy               Banane            75                                                                                       1

      xxz               Pere                 125                                                   300                           1

      xyx             Albicocche                                                                                                    0

      xyy              Fragole                                        115                        135                           1

      xyz              Ciliege              65                         90                                                          1

      xzx              Angurie                                                                          25                           1

      xzy               Arance             26                                                         72                           1

      xzz              Ananas                                                                                                          0

      yxx            Pompelmi                                       80                            35                           1

    Dopo l'applicazione del filtro valore 1 nella colonna Parametro spariscono le righe Albicocche e Ananas. L'esigenza di questo foglio,condiviso con altri operatori, è mostrare tutti i prodotti con la presenza di almeno un valore nelle tre colonne C, D ed E.

    Poichè i dati delle colonne Codice e DatoAnnoN vanno caricati in un altro software si propone una nuova esigenza, creare un file .csv (formato richiesto dall'applicativo esterno) per importare i dati. Questo applicativo richiede la presenza delle 2 colonne predette senza righe vuote (nell'esempio vanno eliminate le righe Fragole, Angurie e Pompelmi dopo l'applicazione del primo filtro).

    Attualmente il problema viene risolto nel seguente modo:

    dopo aver filtrato i dati del file excel iniziale con il valore 1 nella colonna Parametro eseguo:

    1) copio i valori compresi nell'area da Codice a DatoAnnoN e li riporto in un altro file excel nel foglio1, quindi partendo dal mio esempio ho:

    Codice     Descrizione     DatoAnnoN     

      xxx               Mele                 100                   

      xxy               Banane            75                     

      xxz               Pere                 125                                                   

      xyy              Fragole                                        

      xyz              Ciliege              65                        

      xzx              Angurie                                                                          

      xzy               Arance             26                    

      yxx            Pompelmi  

    1. elimino la colonna Descrizione perchè non richiesta per l'importazione dei dati; inoltre come da te individuato sopra elimino le righe senza un valore nella colonna DatoAnnoN. Questo l'ottengo con la selezione dei dati e l'applicazione del filtro automatico. Poi posiziono il cursore nella colonna DatoAnnoN e filtro tutti le celle Non Vuote. Copio i dati filtrati e applico incolla speciale, valore nel foglio2;
    2. elimino il foglio1 e il foglio3, e salvo il foglio2 con il formato .csv utile all'importazione dei dati.

    Quello che chiedevo se esiste un modo per automatizzare i punti 1, 2 e 3 partendo dal file iniziale di excel magari cliccando un pulsante o un'icona. Non so se con macro o VBA.

    Saluti.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-09-03T17:25:35+00:00

    Grazie per l'attenzione prestata.

    Sì, in sostanza voglio ottenere, un file formato .csv esterno al file iniziale con il contenuto delle colonne A e C dell'esempio.

    Il punto 4 è un passaggio necessario nella procedura da me esposta, perchè il filtro applicato tramite la colonna Parametro non esclude le righe nulle della colonna C.

    Prima del punto 4 mi trovo con i seguenti dati filtrati:

      xxx           100                   

      xxy            75                 

      xxz           125    

      xyy            

      xyz             65                 

      xzx            

      xzy             26  

    Quindi le righe con un valore mancante vanno eliminate come xyy e xzx.

    Grazie per la collaborazione.

    Saluti.

    Forse mi sfugge qualcosa. Ma fare un secondo filtro sulla colonna C per le celle vuote?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2011-09-03T14:36:29+00:00

    Grazie per l'attenzione prestata.

    Sì, in sostanza voglio ottenere, un file formato .csv esterno al file iniziale con il contenuto delle colonne A e C dell'esempio.

    Il punto 4 è un passaggio necessario nella procedura da me esposta, perchè il filtro applicato tramite la colonna Parametro non esclude le righe nulle della colonna C.

    Prima del punto 4 mi trovo con i seguenti dati filtrati:

      xxx           100                   

      xxy            75                 

      xxz           125    

      xyy            

      xyz             65                 

      xzx            

      xzy             26  

    Quindi le righe con un valore mancante vanno eliminate come xyy e xzx.

    Grazie per la collaborazione.

    Saluti.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2011-09-03T11:12:51+00:00

    Buon giorno,

    volevo sapere se esiste la possibilità di automatizzare, con un semplice click ad un pulsante, una serie di passaggi che devo ripetere quotidianamente per esportare dei dati filtrati da un foglio excel.

    Con un esempio cerco di chiarire il concetto.

    <cut>

    1. eliminare le righe del nuovo foglio1 che non hanno entrambi i valori sulle rispettive colonne, inoltre elimino delle righe predeterminate (quelle con valore sulla prima colonna xyz e xzy) anche se hanno i valori in entrambe le colonne;
    2. elimino la prima riga in alto, elimino il foglio2 e il foglio3 del nuovo file excel e apro la finestra salva con come scegliendo nella casella tipo file il formato .csv

     

    In pratica vuoi fare un file .csv partendo da un file di Excel delle colone A e C filtrate?. E non  ho capito il punto 4 .

    La risposta è stata utile?

    0 commenti Nessun commento