Si importa una lista de datos a Excel, no es inusual terminar con una gran cantidad de datos en la columna A. De hecho, no es inusual no tener nada en ninguna de las otras columnas. (Todo esto depende de la naturaleza de los datos que está importando, por supuesto). Como parte del trabajo con los datos en Excel, es posible que desee «reorganizar» los datos para que se muestren en más columnas que solo la columna A .

Como ejemplo, imagina que importaste tus datos y terminaron ocupando las filas 1 a 212 de la columna A. Lo que realmente quieres es que los datos ocupen las columnas A a F, sin importar cuántas filas sean necesarias para contener los datos. Por lo tanto, A2 debe moverse a B1, A3 a C1, A4, a D1, A5 a E1, A6 a F1, y luego A7 a A2, A8 a B2, etc.

Para reorganizar los datos de esta manera, puede utilizar la siguiente macro.

Seleccione los datos que desea reorganizar y luego ejecute la macro. Se le pregunta cuántas columnas desea en los datos reorganizados y luego comienza el cambio de datos.

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 transfiere información definiendo dos rangos: el rango de origen que seleccionó cuando ejecutó la macro y el rango de destino definido por el tamaño calculado en función del número de columnas que desea. El rango de origen está representado por el objeto variable rSource y el rango de destino por rTarget. El bucle For …​ Next se utiliza para transferir realmente los valores.

_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 (2301) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

enlace: / excelribbon-Reorganizing_Data [Reorganizando datos].