Excel - Una macro para transferir datos de filas a columnas

Problema

Los datos ahora están en el siguiente formato.

 1 2 3

9 15 16 20 25

1

Esto tiene que venir en este formato.

 1

2

3

9

15

dieciséis

20

25

1

Solución

Suposiciones
  • 1. Los datos comienzan desde la fila 1 y se deben copiar siempre en la columna A
  • 2. Las filas se pueden insertar sin distorsión a los datos.

 Sub TransposeSpecial ()

Dim lMaxRows As Long 'max filas en la hoja

Dim lThisRow As Long 'se está procesando la fila

Dim iMaxCol As Integer 'max. Columna utilizada en la fila que se está procesando

lMaxRows = Cells (Rows.Count, "A"). End (xlUp) .Row

lThisRow = 1 'comienza desde la fila 1

Do While lThisRow <lMaxRows

iMaxCol = Cells (lThisRow, Columns.Count) .End (xlToLeft) .Column

Si (iMaxCol> 1) Entonces

Filas (lThisRow + 1 & ":" & lThisRow + iMaxCol - 1) .Insert

Rango (Células (lThisRow, 2), Células (lThisRow, iMaxCol)). Copiar

Rango ("A" & lThisRow + 1) .Seleccionar

Selection.PasteSpecial Paste: = xlPasteAll, Operation: = xlNone, SkipBlanks: = False, Transpose: = True

Rango (Células (lThisRow, 2), Células (lThisRow, iMaxCol)).

lThisRow = lThisRow + iMaxCol - 1

lMaxRows = Cells (Rows.Count, "A"). End (xlUp) .Row

Terminara si

lThisRow = lThisRow + 1

Lazo

End Sub

Tenga en cuenta que

Gracias a rizvisa1 por este consejo en el foro.
Artículo Anterior Artículo Siguiente

Los Mejores Consejos