Chiunque abbia lavorato con Excel su report professionali conosce bene quel momento di frustrazione: si preme Stampa, e la riga “Totale” finisce da sola su una pagina vuota. Oppure saltano fuori fogli bianchi fantasma nel PDF. Il problema è reale, e la soluzione più elegante passa dalla creazione di un’area di stampa dinamica che si adatta automaticamente ai dati. Niente più aggiustamenti manuali ogni volta che cambia qualcosa nel foglio di lavoro.
Partiamo da uno scenario concreto. Una fattura professionale con intestazione, logo, dettagli del cliente e una tabella di voci che cambia ogni mese. Due righe a gennaio, venti a marzo. Sotto la tabella c’è sempre un riquadro “Totale” che deve comparire in ogni stampa. Se ci si affida alla stampa predefinita di Excel, i rischi sono almeno due. Primo: se qualcuno ha digitato qualcosa nella riga 50 e poi l’ha cancellata, Excel potrebbe ancora considerarla parte dell’intervallo usato, generando pagine bianche nel PDF. Secondo: la stampa “così com’è” non ha filtri. Calcoli interni, appunti sparsi nelle colonne laterali, tutto finisce nel documento stampato, rovinando la presentazione.
Costruire l’area di stampa dinamica con la funzione OFFSET
La chiave sta nel creare un intervallo denominato dinamico. Attenzione però: Excel tende a sostituire le formule dinamiche con riferimenti statici quando si usa “Imposta area di stampa”. Per aggirare il problema, serve un nome “proxy” che protegga la formula. Dalla scheda Formule, si apre Gestione nomi e si crea un nuovo nome chiamato InvoiceRange. Nel campo “Riferito a” va incollata questa formula: “=OFFSET($AEUR 1, COUNTA($A:$A)+8, 5)”
Ecco cosa fa, pezzo per pezzo. $AEUR 1 è l’ancora: la stampa parte sempre dall’angolo in alto a sinistra. COUNTA($A:$A)+8 calcola l’altezza contando tutte le celle non vuote nella colonna A e aggiungendo 8 righe di “margine” per coprire le righe vuote del layout. Il numero 5 blocca la larghezza a cinque colonne (dalla A alla E), impedendo che la stampa sconfini nelle colonne laterali. Se il template ha più o meno colonne, basta modificare quel valore. Ora bisogna collegare il proxy all’area di stampa. Si selezionano le celle attive della fattura (A1:E23), si va nella scheda Layout di pagina e si clicca su Area di stampa > Imposta area di stampa. Poi si riapre Gestione nomi, si seleziona la voce PrintArea, si cancella il campo “Riferito a”, si preme F3 e si fa doppio clic su InvoiceRange. Conferma e chiusura.
Collegare la formula alla configurazione di stampa e testare il tutto
Dalla scheda Layout di pagina, si apre la finestra di dialogo Imposta pagina cliccando sulla piccola icona nell’angolo del gruppo. Nella scheda Foglio si cancella il campo Area di stampa, si preme F3 e si seleziona PrintArea. Due clic su OK per chiudere tutto. Un avvertimento importante: da questo momento in poi, non riaprire mai quella finestra né usare il pulsante Imposta area di stampa. Excel “risolverebbe” la formula trasformandola in coordinate statiche, distruggendo l’automazione. Se succede, basta tornare in Gestione nomi e reimpostare il campo su =InvoiceRange.
Per il test, si aggiungono nuove righe alla tabella (che essendo formattata come tabella Excel genera automaticamente nuove righe premendo Tab), si inseriscono dati fittizi e magari qualche nota sparsa nella colonna G o nella riga 32. Premendo Ctrl+P per l’anteprima di stampa, l’area si sarà espansa perfettamente includendo tutte le nuove righe e il riquadro Totale, senza traccia degli appunti esterni. Se l’area risulta tagliata, il colpevole potrebbe essere la presenza di celle unite nella colonna A: Excel le conta come una sola cella, falsando il calcolo dell’altezza. Dove possibile, meglio usare “Centra nella selezione” al posto dell’unione celle.
