A volte i dati raccolti in un foglio di lavoro si adattano molto bene a una singola colonna. Ad esempio, potresti avere un elenco di nomi e sono tutti contenuti nella colonna A del tuo foglio di lavoro. Quando si sceglie di stampare il foglio di lavoro, la stampa può consumare parecchie pagine, tutte quasi vuote poiché il lato sinistro di ogni pagina contiene un nome e il lato destro contiene uno spazio bianco.
In questo tipo di istanza, sarebbe carino stampare la singola colonna come se fossero più colonne. In questo modo potresti utilizzare meno pagine complessive per il tuo lavoro di stampa. Sfortunatamente, Excel non contiene comandi intrinseci o impostazioni di stampa che ti consentano di riformattare automaticamente i tuoi dati in modo che vengano stampati meglio. Esistono tuttavia soluzioni alternative.
Una soluzione alternativa che spesso viene trascurata è semplicemente copiare l’elenco a colonna singola in un documento Word vuoto. Se lo incolli lì come testo normale, puoi formattare ciascuna pagina per più colonne e stampare effettivamente le informazioni.
Se preferisci non coinvolgere Word, puoi tagliare e incollare le informazioni dalla prima colonna in altre colonne per ottenere il numero desiderato di colonne di stampa. Questo, ovviamente, dovrebbe essere fatto in un nuovo foglio di lavoro o cartella di lavoro, in modo che i dati originali rimangano invariati. Ad esempio, se hai 200 nomi nell’elenco originale, puoi tagliare 40 nomi alla volta dall’elenco e incollarli nelle colonne da A a E di un nuovo foglio di lavoro. La stampa di questo foglio di lavoro richiede meno pagine rispetto alla stampa del foglio di lavoro originale a colonna singola.
Naturalmente, se devi fare spesso questo copia e incolla, il lavoro può diventare rapidamente noioso. In questo caso, puoi utilizzare una macro che fa esattamente la stessa cosa: suddivide l’elenco originale e lo incolla in varie colonne su una nuova cartella di lavoro.
Sub SingleToMultiColumn()
Dim rng As Range
Dim iCols As Integer
Dim lRows As Long
Dim iCol As Integer
Dim lRow As Long
Dim lRowSource As Long
Dim x As Long
Dim wks As Worksheet
Set rng = Application.InputBox _
(prompt:="Seleziona l'intervallo da convertire", _
Type:=8)
iCols = InputBox("Quante colonne vuoi?")
lRowSource = rng.Rows.Count
lRows = lRowSource / iCols
If lRows * iCols <> lRowSource Then lRows = lRows + 1
Set wks = Worksheets.Add
lRow = 1
x = 1
For iCol = 1 To iCols
Do While x <= lRows And lRow <= lRowSource
Cells(x, iCol) = rng.Cells(lRow, 1)
x = x + 1
lRow = lRow + 1
Loop
x = 1
Next
End Sub
Quando esegui questa macro, ti viene chiesto di selezionare l’intervallo che desideri convertire, quindi ti viene chiesto di specificare il numero di colonne in cui desideri che venga riformattato. La macro crea un nuovo foglio di lavoro nella cartella di lavoro corrente e copia le informazioni dall’originale in tutte le colonne specificate.
Infine, se preferisci non utilizzare una macro, puoi utilizzare una formula per ottenere le righe e le colonne da stampare. Diciamo ancora una volta che hai 200 nomi nella colonna a (nell’intervallo A1:A200) e vuoi stamparli in cinque colonne di 40 righe ciascuna. Puoi inserire questa formula nella cella B1:
=INDIRETTO(INDIRIZZO(RIF.RIGA()+40*RIF.COLONNA(A1);1))
Seleziona l’intervallo B1:E40 (assicurati che B1 sia la cella attiva nell’intervallo selezionato), quindi premi F2 e infine Ctrl+Invio. Excel riempie l’intervallo con la formula. Ora puoi selezionare A1:E40 e stampare solo quella selezione (non vuoi stampare l’intero foglio di lavoro perché i dati originali sono ancora nelle 200 righe originali. Ecco perché devi selezionare l’intervallo riformattato e stampare semplicemente quella selezione).