Filtrare i valori di una colonna in un foglio Dati e creare tanti fogli singoli con i nomi dei parametri filtrati + PDF degli stessi fogli creati.

Anonimo
2016-01-28T08:15:27+00:00

Buongiorno a tutti, ho bisogno del vostro aiuto per poter realizzare, con VBA ( ora svolgo queste operazioni in modo manuale con Filtro, copia e incolla dei dati filtrati) una procedura che mi crei quanto spiego di seguito.

Ho un foglio chiamato Dati che funge da riepilogo di tutti i dati  provenienti da più fogli e che riportano i dati in colonne.

Ho una colonna chiamata RUOLO che contiene delle cifre che indicano l'appartenenza del personale ad un determinato reparto.

Io desidererei poter fare questo:

1) filtrare tutti i dati in base ai valori riportati nelle colonna chiamata RUOLO per es. tutti i dati di 1103,1107,1110 e cosi via fino alla fine;

  1. poter creare tanti fogli singoli quanti sono i valori filtrati nelle stessa colonna RUOLO per es. fogli che si chiamano 1103;1107;1110 e cosi via;
  2. incollare i dati in questi fogli in base ai valori filtrati nel foglio DATI e che hanno come criterio di filtro proprio le stesse cifre, cioè, se filtro i dati che hanno nella colonna RUOLO il valore 1103, questi devono essere incollati nel foglio che ho creato con nome 1103 e cosi via per gli altri;
  3. i questi fogli creati con i rispettivi dati filtrati creare altrettanti file pdf da salvare in una determinata cartella per poi inviarli ai destinatari interessati;
  4. degli stessi fogli singoli creati con nomi 1103,1107,1110 e cosi via creare nella stessa cartella dei PDF i singoli file di Excel da inviare (in formato Excel per altri motivi esempio rettifica di un dato ecc.) ai reparti dipendenti.

Spero di essere stato chiaro e comprensibile, chiedetemi pure altre informazioni se necessarie.

Ringrazio anticipatamente chi mi aiuta in questo.

Ho pubblicato un file di esempio al seguente link: http://1drv.ms/1KcoRLe

Ciao Nicola.

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
Risposta accettata dall'autore della domanda
Anonimo
2016-01-28T11:01:32+00:00

Se ho capito, modifica:

For lng = 2 To lRiga

            col.Add CStr(.Range("D" & lng).Val ue), _

                CStr(.Range("D" & lng).Value)

        Next

così:

For lng = 2 To lRiga

            col.Add CStr(.Cells(lng, f).Value), _

                CStr(.Cells(lng, f).Value)

        Next

La risposta è stata utile?

0 commenti Nessun commento

9 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-01-28T10:52:19+00:00

    Ciao Mauro ho adattato la tua funzione alle mie esigenze e te la posto, ma ho notato che se non cambio il riferimento alla colonna da filtrare qui mi sballa la copia dei dati , se lascio D va bene perché ora la colonna D si chiama Ruolo.

    Ho provato a mettere f ( nom efunzione ) al posto del nome della colonna e mi crea tantissimi fogli di lavoro in base ad altri valori ecc. cosa devo modificare Mauro.

    For lng = 2 To lRiga

                col.Add CStr(.Range("D" & lng).Value), _

                    CStr(.Range("D" & lng).Value)

            Next

    _____

    Public Function f() As Long

         Dim lng As Long

        For lng = 1 To 25

             If Sheets("DATI").Cells(1, lng).Value = "RUOLO" Then f = lng

         Next

    End Function

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-28T10:09:54+00:00

    Puoi, ad esempio, creare una semplice funzione che controlli nella riga dove hai le intestazioni quale colonna passare al filtro. Ad esempio:

    Public Function f() As Long

        Dim lng As Long

        For lng = 1 To 6

            If Foglio1.Cells(1, lng).Value = "RUOLO" Then f = lng

        Next

    End Function

    Quindi modificherai qui:

    .Range("$A$1").AutoFilter Field:=1, Criteria1:=v

    così:

    .Range("$A$1").AutoFilter Field:=f, Criteria1:=v


    Nota. Nella Funcion ho scritto Foglio1. Modificalo con il riferimento al tuo foglio e modifica il 6 con il riferimento al numero max della colonna nel quale cercare RUOLO.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-01-28T09:38:47+00:00

    Ciao Mauro, grazie innanzitutto per il tuo gentilissimo e prezioso intervento, meraviglioso il tuo file, l'ho già adattato alle mie necessità e funziona benissimo, ho remmato la parte che mi somma i valori (per ora non mi interessa).

    Per quanto riguarda la mia reale attività lavorativa, poiché la colonna chiamata RUOLO potrebbe variare, cioè trovarsi oggi alla colonna D ma domani alla colonna A, anziché variare a mano nel codice i riferimenti alla colonna da filtrare non è possibile farlo in automatico a prescindere in quale colonna compari l'intestazione chiamata RUOLO?

    Spero di essere stato chiaro Mauro.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-01-28T08:36:19+00:00

    Puoi cominciare da qui:

    Modifica la riga qui sotto per la Directory dove vai a salvare i file:

    • ThisWorkbook.Path & ""

    Questo salva un file di Excel. Prova un po' e poi vediamo come salvare anche il pdf.

    La risposta è stata utile?

    0 commenti Nessun commento