Se importi un elenco di dati in Excel, non è insolito ritrovarsi con molti dati nella colonna A.In effetti, non è insolito non avere nulla in nessuna delle altre colonne. (Tutto dipende dalla natura dei dati che stai importando, ovviamente.) Come parte del lavoro con i dati in Excel, potresti voler “riorganizzare” i dati in modo che vengano inseriti in più colonne rispetto alla semplice colonna A .

Ad esempio, immagina di aver importato i tuoi dati e ha finito per occupare le righe da 1 a 212 della colonna A. Quello che vuoi veramente è che i dati occupino le colonne da A a F, di quante righe siano necessarie per contenere i dati. Quindi, A2 deve essere spostato in B1, A3 in C1, A4, in D1, A5 in E1, A6 in F1, e poi A7 in A2, A8 in B2, ecc.

Per riorganizzare i dati in questo modo, è possibile utilizzare la seguente macro.

Seleziona i dati che desideri riorganizzare, quindi esegui la macro. Ti viene chiesto quante colonne desideri nei dati riorganizzati, quindi inizia lo spostamento dei dati.

Sub CompressData()

Dim rSource As Range     Dim rTarget As Range     Dim iWriteRow As Integer     Dim iWriteCol As Integer     Dim iColCount As Integer     Dim iTargetCols As Integer     Dim J As Integer

iTargetCols = Val(InputBox("How many columns?"))

If iTargetCols > 1 Then         Set rSource = ActiveSheet.Range(ActiveWindow.Selection.Address)

If rSource.Columns.Count > 1 Then Exit Sub

iWriteRow = rSource.Row + (rSource.Cells.Count / iTargetCols)

iWriteCol = rSource.Column + iTargetCols - 1         Set rTarget = Range(Cells(rSource.Row, rSource.Column), _           Cells(iWriteRow, iWriteCol))



For J = 1 To rSource.Cells.Count             rTarget.Cells(J) = rSource.Cells(J)

If J > (rSource.Cells.Count / iTargetCols) Then _               rSource.Cells(J).Clear         Next J     End If End Sub

La macro trasferisce le informazioni definendo due intervalli: l’intervallo di origine selezionato durante l’esecuzione della macro e l’intervallo di destinazione definito dalla dimensione calcolata in base al numero di colonne desiderate. L’intervallo di origine è rappresentato dall’oggetto variabile rSource e l’intervallo di destinazione da rTarget. Il ciclo For …​ Next viene utilizzato per trasferire effettivamente i valori.

_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 (8188) si applica a Microsoft Excel 2007, 2010 e 2013. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: