Macro para copiar a otro libro ordenando en columnas

Necesito copiar los datos a otro archivo pero separándolos por años en columnas, en el archivo original tengo fecha y temp en una sola columna, desde el año 1950 y quiero ubicarlos en otro archivo en una columna por año:

original  Fecha               Temp

              01/01/1950      15,5

             02/07/1958         16 

y quiero a la Hoja ponerle el nombre de Temp y que aparezca asi:

          1950    ......          1958  

             15,5                16

Los años son consecutivos

Respuesta
1

En el año de 1950 tienes más fechas y más valores en la columna Temp, por ejemplo, tienes algo como esto:

1/1/1950   15

2/3/1950   16

4/8/1950  17

23/9/1950  18

...

Y lo quieres así:

1950

15

16

17

18

Me comentas también en qué columna está la fecha, en cuál columna el valor y en cuál fila empiezan.

en A1 comienza la fecha  y en B1 el valor, las columnas tienen Titulo

A1 FECHA                B1 T

A2 01/01/1950       15

A3 02/01/1950        14,5

Pon la siguiente macro en tu hoja de datos.

En ese mismo archivo crea una hoja llamada "temp"

Cambia en la macro "Hoja3" por el nombre de tu hoja con datos.

Sub Copiar_Columnas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja3")    'nombre de tu hoja con datos
    Set h2 = Sheets("temp")
    '
    h2.Cells.Clear
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        año = Year(h1.Cells(i, "A"))
        Set b = h2.Rows(1).Find(año, lookat:=xlPart)
        If Not b Is Nothing Then
            u = h2.Cells(Rows.Count, b.Column).End(xlUp).Row + 1
            h2.Cells(u, b.Column) = h1.Cells(i, "B")
        Else
            uc = h2.Cells(1, Columns.Count).End(xlToLeft).Column + 1
            h2.Cells(1, uc) = año
            h2.Cells(2, uc) = h1.Cells(i, "B")
        End If
    Next
    h2.Columns("A").Delete
    h2.Copy
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

Ejecuta la macro, al final te generará un archivo nuevo con el resultado.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias!  Muchas GRACIAS !! Genial

se podrá agregar una columna con el día, por los años bisiestos:

A1                  B1    ....     C1

Día           1950             1956

01/01           15            16

02/01           14              15

28/02            17              17  

29/02                               16

gracias nuevamente

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft Excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con detalle lo que necesitas. Procura poner ejemplos más completos de cómo lo tienes y cómo quieres el resultado

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas