James tiene algunos datos en una hoja de trabajo que está contenida en una serie de filas. Una de las columnas de los datos incluye celdas que tienen varias líneas por celda. (Los datos de la celda se separaron en líneas presionando Alt + Intro entre los elementos). A James le gustaría dividir estos datos en varias filas. Por ejemplo, si hubiera tres líneas de datos en una sola celda en la fila, entonces los datos en esa celda deben dividirse en tres filas.

Excel proporciona una forma práctica de dividir datos en columnas separadas utilizando la herramienta Texto a columnas. Esto se puede usar para dividir los datos según la presencia del carácter ASCII 10, que es lo que Excel inserta cuando presiona Alt + Enter. El problema es que si bien esto divide correctamente los datos en columnas separadas, no los coloca en filas separadas, como solicitó James.

Eso significa que la solución a este problema debe incluir el uso de una macro. Un enfoque se muestra en el siguiente código. En este ejemplo, la macro asume que desea «expandir» todo en la hoja de trabajo, y que los datos en la hoja de trabajo comienzan en la fila 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

Tenga en cuenta que para ejecutar la macro, deberá especificar, utilizando la variable iColumn, la columna que contiene las celdas que se dividirán.

Como está escrito aquí, la macro divide la información en la cuarta columna. Además, las versiones separadas de las celdas se almacenan en una nueva hoja de trabajo, por lo que la hoja de trabajo original no se ve afectada en absoluto.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (9396) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Splitting_Information_into_Rows [División de información en filas].