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 scegli di stampare il foglio di lavoro, può occupare 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 bello stampare la singola colonna come se fosse più colonne. In questo modo potresti usare più pagine stampate e meno pagine complessive per il tuo lavoro di stampa. Sfortunatamente, Excel non contiene alcun comando intrinseco o impostazione di stampa che ti consenta di riformattare automaticamente i tuoi dati in modo che vengano stampati meglio. Tuttavia, esistono soluzioni alternative.

Una soluzione alternativa che viene spesso trascurata è semplicemente copiare l’elenco a colonna singola in un documento di Word vuoto. Se lo incolli lì come testo normale, puoi formattare ogni 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 fornire 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 indisturbati. Ad esempio, se hai 200 nomi nell’elenco originale, puoi tagliare 40 nomi alla volta dall’elenco e incollarli nelle colonne dalla A alla E di un nuovo foglio di lavoro. La stampa di questo foglio di lavoro richiede meno pagine rispetto alla stampa del foglio di lavoro a colonna singola originale.

Ovviamente, se devi fare questo taglia e incolla spesso, il lavoro di routine può diventare rapidamente noioso. In questo caso, puoi usare una macro che fa esattamente la stessa cosa: taglia e taglia l’elenco originale e lo incolla in un numero di 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:="Select the range to convert", _       Type:=8)

iCols = InputBox("How many columns do you want?")

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. Crea un nuovo foglio di lavoro nella cartella di lavoro corrente e copia le informazioni dall’originale in tutte le colonne specificate.

Per ulteriori risorse per risolvere questo problema, fare riferimento ai seguenti siti Web:

http://www.ozgrid.com/VBA/MiscVBA.htm#Print http://dmcritchie.mvps.org/excel/snakecol.htm

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (8239) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: