Arrastrar verticalmente datos horizontales. Función excel

Tengo una hoja de datos con columnas para año mes día y las horas de dicho día, tal que así:

A1           A2         A3        A4     A5     A6     A7      A8

AÑO      MES      DIA       00      01      02      03      04

2015        1            1          4         5        4        0       -3  

2015        1            2         18       12      8       12      12

2015        1            3         29       25     14      14       7

2015        1            4        127     128   126   122    118

Y quiero pasar estos datos a una hoja dónde los datos estén en filas tal que así:

A1           A2         A3          A4           A5        

AÑO      MES      DIA       HORA      DATO

2015        1           1             00            4

2015        1           1             01            5

2015        1           1             02            4

2015        1           1             03            0

...

He probado con =BUSCAR pero al arrastrar la fórmula, ésta, evidentemente, coge los valores de las columnas y no de las filas.

2 Respuestas

Respuesta
4

H o l a: Te anexo la macro para pasar los datos de la hoja1 a la hoja2.

Pon tus datos en la "hoja1", los encabezados deberán estar en la fila, los datos deben empezar en la celda B2.

El resultado quedará en la "hoja2", si no tienes una "hoja2", crea una nueva hoja y la llamas "hoja2".

Sub Arrastrar()
'---
'   Por.Dante Amor
'---
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Rows(2 & ":" & Rows.Count).Clear
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 2 To h1.Range("B" & Rows.Count).End(xlUp).Row
        filas = uc - Columns("D").Column
        h1.Range(h1.Cells(i, "B"), h1.Cells(i, "D")).Copy
        u2 = h2.Range("B" & Rows.Count).End(xlUp).Row + 1
        h2.Range("B" & u2 & ":B" & u2 + filas - 1).PasteSpecial xlValues
        h1.Range(h1.Cells(1, "E"), h1.Cells(1, uc)).Copy
        h2.Range("E" & u2).PasteSpecial xlValues, Transpose:=True
        h1.Range(h1.Cells(i, "E"), h1.Cells(i, uc)).Copy
        h2.Range("F" & u2).PasteSpecial xlValues, Transpose:=True
    Next
    Application.ScreenUpdating = True
    Application.CutCopyMode = False
    MsgBox "fin"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Arrastrar
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Avísame cualquier duda


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

¡Gracias! 

Al final de mi respuesta hay dos botones para valorar la respuesta "Voto" y "Excelente", si solamente votaste la respuesta, puede ser que tienes alguna duda, de lo contrario, apreciaría que cambiaras la valoración.

Respuesta
1

¿Puedes poner una imagen de como tienes los datos y cual es el resultados que esperas?

Así están

Así los quiero

Gracias

Necesitarías armar una tabla con 8.760 filas (365*24) para cada año, donde figurasen año, mes, día y hora y luego con la función matricial =transponer(rango) pasar los datos que necesitas de la hoja 1 a esta otra hoja.

"A mano" se podría hacer, pero entiendo que a través de una macro o, tal vez, con una tabla dinámica la solución sería mas práctica.

Lamentablemente, mis conocimiento de ambas técnicas es muy limitado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas