
Tengo filas de datos de igual longitud, por ejemplo, A1:A5, B1:B5, C1:C5, etc. Quiero ponerlas en una sola columna, por ejemplo, D1:D5, D6:D10, D11:D15, etc. No hay encabezados ni identificadores de fila. Creo que usar INDIRECTO con una combinación de valores de FILA y COLUMNA debería funcionar, pero parece que no puedo encontrar la combinación correcta.
Respuesta1
Respuesta2
Esto ignorará los encabezados de las columnas y no eliminará los datos de las celdas originales. Dependiendo de su hoja de trabajo, es posible que necesite cambiar los valores de las columnas.
Sub Macro1()
Const firstRowWithData = 2 ' assumes labels in row 1
Dim anyWS As Worksheet
Dim copyRange As Range
Dim CP As Integer
For Each anyWS In ThisWorkbook.Worksheets
For CP = Range("B1").Column To Range("D1").Column
Set copyRange = anyWS.Range(anyWS.Cells(2, CP).Address & ":" & _
anyWS.Cells(Rows.Count, CP).End(xlUp).Address)
copyRange.Copy anyWS.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Next
Next
End Sub
antes
A Header B Header C Header
a b c
a b c
a b c
después
A Header B Header C Header
a b c
a b c
a b c
b
b
b
c
c
c
Luego elimine manualmente las columnas originales.