Michele ha tutti gli ordini di acquisto dell’anno della sua azienda nella stesso foglio di lavoro. I dati sono ordinati nella colonna C, che contiene i nomi dei fornitori. Michele desidera stampare una pagina separata per ciascun fornitore con tutti i dati di quelle righe. Si chiede se esista un modo per automatizzare la stampa di fogli specifici per ogni fornitore.
Come per molte cose in Excel, esistono diversi approcci che puoi adottare per questo problema. In questo suggerimento esaminerò quattro approcci. Tutti e quattro gli approcci presuppongono che i dati siano ordinati in base alla colonna del nome del fornitore (colonna C) e che siano presenti intestazioni di colonna su ciascuna colonna di dati (Data, Numero ordine di acquisto, Fornitore, Importo, ecc.).
Usare i Subtotali
Per stampare fogli specifici per ogni fornitore utilizzando i subtotali, inizia selezionando una cella all’interno dei tuoi dati (una cella nella colonna C sarebbe perfetta). Se i tuoi dati non sono contigui, potrebbe essere necessario selezionarli tutti manualmente; se lo sono, invece, la selezione della singola cella dovrebbe essere sufficiente. Quindi, segui questi passaggi:
- Visualizza la scheda Dati della barra multifunzione.
- Nel gruppo Struttura fai clic sullo strumento Subtotale. Excel visualizza la finestra di dialogo Subtotali.
- Assicurati che l’elenco a discesa Ad ogni cambiamento in sia impostato su Fornitore (utilizza il nome della colonna C). Indica al cambiamento di quale valore Excel inserirà i subtotali.
- L’elenco a discesa Usa la funzione deve essere impostato su Somma.
- Utilizzando l’elenco nella casella Aggiungi subtotali a, seleziona la colonna Importo. Qui verrà aggiunta la somma.
- Assicurati che la casella di controllo Sostituisci i subtotali correnti sia selezionata.
- Assicurati che la casella di controllo Interruzioni di pagina tra gruppi sia selezionata.
- Assicurati che la casella di controllo Riepilogo sotto i dati sia selezionata.
- Fai clic su OK.
Excel inserisce i subtotali nel foglio di lavoro, ma inserirà anche le interruzioni di pagina prima di ogni nuovo fornitore (ciò è dovuto al passaggio 7, qua sopra). Le interruzioni di pagina potrebbero non essere immediatamente evidenti, ma entrano in gioco quando si stampa il foglio di lavoro.
Una volta stampata, ciò che ti ritroverai è una pagina per ciascuno dei tuoi fornitori. Il totale parziale appena sotto l’ultima riga di ciascuna pagina indica la somma dell’importo degli ordini d’acquisto stampati per quel particolare fornitore.
Usare i Dati filtrati
Filtrare i dati è abbastanza semplice e questo è un buon approccio se non è necessario stampare questo tipo di report così spesso. Ancora una volta, inizia selezionando una cella all’interno dei tuoi dati, a meno che i tuoi dati non siano contigui (in tal caso dovrai selezionare manualmente tutti i tuoi dati). Quindi, segui questi passaggi:
- Visualizza la scheda Dati della barra multifunzione.
- Fai clic sullo strumento Filtro nel gruppo Ordina e filtra. Excel dovrebbe visualizzare gli indicatori a discesa del filtro automatico accanto a ciascuna etichetta di colonna nella riga 1.
- Utilizzando l’indicatore a discesa per la colonna Fornitore (colonna C), scegli il nome del fornitore che desideri stampare. Il tuo elenco viene automaticamente filtrato per visualizzare solo gli ordini d’acquisto di quel fornitore.
- Stampa la pagina come faresti normalmente. Il report stampato dovrebbe mostrare solo gli ordini d’acquisto per il fornitore specificato nel passaggio 3.
Se desideri stampare report per altri fornitori, tutto ciò che devi fare è cambiare il filtro (passaggio 3) e ristampare (passaggio 4). Al termine, è possibile rimuovere il filtro facendo nuovamente clic sullo strumento Filtro nella scheda Dati della barra multifunzione.
Usare le Tabelle Pivot
Un altro modo rapido per creare i report desiderati è utilizzare le funzionalità Tabella pivot di Excel. Non entrerò nel dettaglio di come creare una tabella pivot in questa sede. La tua tabella pivot può essere impostata praticamente come preferisci, ma devi assicurarti che il campo Fornitore si trovi nel gruppo Filtri del riquadro Campi tabella pivot.
Successivamente, visualizza la scheda Analisi tabella pivot della barra multifunzione (questa scheda è visibile solo quando selezioni una cella all’interno della tabella pivot). Nel gruppo Tabella pivot, a sinistra della barra multifunzione, fai clic sull’elenco a discesa Opzioni e scegli Mostra pagine filtro rapporto (questa opzione è disponibile solo se ti sei assicurato che il campo Fornitore sia nel gruppo Filtri, come menzionato in precedenza). Excel visualizza la finestra di dialogo Mostra pagine filtro rapporto.
Nella finestra di dialogo dovrebbe essere elencato un solo campo, a meno che tu non abbia aggiunto più campi al gruppo Filtri. Se è elencato più di un campo, assicurati di fare clic sul campo Fornitore. Quando fai clic su OK, Excel crea fogli di lavoro tabella pivot separati per ciascun fornitore nella tabella dati. A seconda delle informazioni che hai scelto di includere nella tabella pivot, questi possono creare ottimi report per i tuoi fornitori. È quindi possibile stampare i fogli di lavoro per ottenere i report desiderati.
Usare le macro
Esistono molti modi in cui puoi impostare una macro per fornirti i dati desiderati. Personalmente, preferisco una macro che esamini i tuoi dati e crei nuovi fogli di lavoro per ciascun fornitore. Questo è ciò che fa la macro seguente: compila un elenco di fornitori dai tuoi dati e quindi crea un foglio di lavoro con il nome di ciascun fornitore. Quindi copia le informazioni dal foglio di lavoro originale ai fogli di lavoro appena creati.
Sub CreaFogliFornitori()
' Per utilizzare questa macro, seleziona la prima cella
' nella colonna che contiene i nomi dei fornitori.
Dim sTemp As String
Dim sVendors(99) As String
Dim iVendorCounts(99) As Integer
Dim iVendors As Integer
Dim rVendorRange As Range
Dim c As Range
Dim J As Integer
Dim bFound As Boolean
' Trova l'ultima riga nel foglio di lavoro
Set rVendorRange = ActiveSheet.Range(Selection, _
ActiveSheet.Cells(Selection.SpecialCells(xlCellTypeLastCell).Row, _
Selection.Column))
' Raccoglie tutti i nomi dei fornitori in uso
iVendors = 0
For Each c In rVendorRange
bFound = False
sTemp = Trim(c)
If sTemp > "" Then
For J = 1 To iVendors
If sTemp = sVendors(J) Then bFound = True
Next J
If Not bFound Then
iVendors = iVendors + 1
sVendors(iVendors) = sTemp
iVendorCounts(iVendors) = 0
End If
End If
Next c
' Crea il foglio di lavoro
For J = 1 To iVendors
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sVendors(J)
Next J
' Copia le informazioni
Application.ScreenUpdating = False
For Each c In rVendorRange
sTemp = Trim(c)
If sTemp > "" Then
For J = 1 To iVendors
If sTemp = sVendors(J) Then
iVendorCounts(J) = iVendorCounts(J) + 1
c.EntireRow.Copy Sheets(sVendors(J)). _
Cells(iVendorCounts(J), 1)
End If
Next J
End If
Next c
Application.ScreenUpdating = True
End Sub
Come notato all’inizio della macro, è necessario selezionare la prima cella di dati nella colonna Fornitore prima di eseguire la macro. Una volta completato, avrai un foglio di lavoro per ciascun fornitore, che potrai formattare e stampare come desideri (potresti rendere la macro ancora più utile aggiungendo codice che inserirà informazioni sull’intestazione di colonna o altre informazioni in ogni foglio di lavoro creato). Una volta terminato, dovrai eliminare i fogli di lavoro per quei fornitori in modo che la prossima volta che esegui la macro non avrai problemi.