James ha alcuni dati in un foglio di lavoro contenuto in una serie di righe. Una delle colonne nei dati include celle con più righe per cella. (I dati nella cella sono stati separati in righe premendo Alt + Invio tra gli elementi.) James vorrebbe suddividere questi dati in più righe. Ad esempio, se ci fossero tre righe di dati in una singola cella nella riga, i dati in quella cella dovrebbero essere suddivisi in tre righe.

Excel offre un modo pratico per dividere i dati in colonne separate utilizzando lo strumento Testo in colonne. Questo può essere utilizzato per dividere i dati in base alla presenza del carattere ASCII 10, che è ciò che Excel inserisce quando si preme Alt + Invio. Il problema è che mentre questo divide correttamente i dati in colonne separate, non li ottiene in righe separate, come richiesto da James.

Ciò significa che la soluzione a questo problema deve includere l’uso di una macro. Un approccio è illustrato nel codice seguente. In questo esempio, la macro presume che tu voglia “espandere” tutto nel foglio di lavoro e che i dati nel foglio di lavoro inizino nella riga 1.

Sub CellSplitter()

Dim Temp As Variant     Dim CText As String     Dim J As Integer     Dim K As Integer     Dim L As Integer     Dim iColumn As Integer     Dim lNumCols As Long     Dim lNumRows As Long

iColumn = 4

Set wksSource = ActiveSheet     Set wksNew = Worksheets.Add

iTargetRow = 0     With wksSource         lNumCols = Cells(1,Columns.Count).End(xlToLeft).Column         lNumRows = Cells(Rows.Count,1).End(xlUp).Row         For J = 1 To lNumRows             CText = .Cells(J, iColumn).Value             Temp = Split(CText, Chr(10))

For K = 0 To UBound(Temp)

iTargetRow = iTargetRow + 1                 For L = 1 to lNumCols                     If L <> iColumn Then                         wksNew.Cells(iTargetRow, L) _                           = .Cells(J, L)

Else                         wksNew.Cells(iTargetRow, L) _                           = Temp(K)

End If                 Next L             Next K         Next J     End With End Sub

Nota che per eseguire la macro, dovrai specificare, utilizzando la variabile iColumn, la colonna che contiene le celle da dividere.

Come scritto qui, la macro divide le informazioni nella quarta colonna. Inoltre, le versioni separate delle celle vengono archiviate in un nuovo foglio di lavoro, in modo che il foglio di lavoro originale non sia affatto interessato.

_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 (9396) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: