Hola, me gustaría intercalar cuatro columnas en una hoja Excel usando macros.

A1      B1      C1      D1      E1
1          2         3        4        1
5          6         7        8        2
9         10       11      12       3
                                           4
                                           5
                                           6
                                           7
                                           ...
No sé si influye pero en las columnas A1, B1, C1 y D1 podrían ser largas. Agradezco por adelantado a cualquier persona que pudiera ayudarme.

1 Respuesta

Respuesta
1
Te dejo el código que te puede ayudar a solucionar tu problema
Al respecto te digo que debes iniciarla, luego de tener seleccionada la matriz que quieres procesar. Quedo pendiente de tu éxito. Saludos
No olvides finalizar y puntuar la pregunta
*******
Sub TransponerEnUnaColumna()
''Creada por FSerrano en 120120 para Javier_24 en TodoExpertos.com
''Copia todos los valores de la matriz seleccionada en una sola columna
''a la derecha de la matriz seleccionada, y elimina las celdas vacías
'Captura la dirección de la matriz a procesar
inicio = Mid(Selection.Address, 1, InStr(1, Selection.Address, ":") - 1)
fin = Application.WorksheetFunction.Substitute(Selection.Address, inicio & ":", "")
'Determina el numero de filas y columnas de la matriz a procesar
filas = Selection.Rows.Count
columnas = Selection.Columns.Count
'inserta una columna a la derecha, donde se pegaran los valores
Cells(ActiveCell.Row, Range(fin).Column + 1).EntireColumn.Insert
'Realiza la copia de cada fila a la columna insertada, transponiendo sus valores
For i = 0 To filas - 1
Range(Cells(Range(inicio).Row + i, Range(inicio). Column).Address & ":" & Cells(Range(inicio).Row + i, Range(fin). Column). Address). Copy
Cells(Range(inicio).Row - 1 + i * columnas + 1, Range(fin).Column + 1).PasteSpecial Paste:=xlValues, operation:=xlNone, skipblanks:=True, Transpose:=True
Next
'Elimina las celdas vacías
Range(Cells(Range(inicio).Row, Range(fin).Column + 1).Address & ":" & Cells(Range(inicio).Row + filas * columnas, Range(fin).Column + 1).Address).SpecialCells(xlCellTypeBlanks).Delete (xlUp)
'Vuelve a la posición inicial
Range(inicio).Activate
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas