Copiar datos de una columna a varias columnas en otra hoja.

Porque estoy algo perdido. Tengo en una columna cerca de 9000 datos que tengo que pasar a varias columnas en otra hoja. Estos datos corresponden a unos valores de potencia fotovoltaica generada durante un año de forma diaria y con muestreos a cada hora. Todos estos datos están colocados en tres columnas de la siguiente forma:

Columna 1: Fecha

Columna 2. Hora de muestreo (0:00 a 23:00 hrs)

Columna 3: Potencia

Por lo que tengo 24 muestras por día, que son las que necesito ir separando en columnas en otra hoja como a continuación os describo:

Columna 1: Hora de muestreo (0:00 a 23:00 hrs)

Columna 2 a columna 366 (365 días): Potencia diaria (24 muestras correspondientes a cada hora)

Seguramente será sencillo, pero supera mis conocimientos en excel. Si podéis echarme una mano os estaría muy agradecido.

2 respuestas

Respuesta
1

Te anexo la macro, estoy suponiendo que en al hoja1 en la fila 1 tienes títulos y entonces tus datos empiezan en la fila 2; si los datos no empiezan en la fila 2, entonces cambia en la macro for i = 2, por For i = 1. En la hoja2 te estoy poniendo títulos en la columna 1 la fecha y en la columna 2 la palabra "Potencia".

Sub CopiarDatos()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Cells.Clear
    j = 1
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row Step 24
        h2.Cells(1, j) = h1.Cells(i, "A")
        h2.Cells(1, j + 1) = "Potencia"
        h1.Range("B" & i & ":C" & i + 23).Copy h2.Cells(2, j)
        j = j + 2
    Next
End Sub

Saludos.Dante Amor

Gracias Dante.

La macro se ejecuta correctamente. Lo único es que no necesito volver a repetir la columna de la hora. Sólo necesito ese dato en la primera columna y en el resto de columnas, las potencias. Estoy intentando modificar tu macro, pero no me sale.

¿Puedes indicarme cómo? Saludos,

Tony Huertas

Hola Dante.

He conseguido parte de lo que necesitaba con la siguiente macro:

Sub CopiarDatos()
'Por.Dante Amor
'
' CopiarDatos Macro
' Copia datos de una columna en varias columnas de otra hoja
'
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
'
h2.Cells.Clear
k = 1
j = 2
For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row Step 24
'Título columnas potencia
h2.Cells(1, j) = "P" & k
'
h1.Range("C" & i & ":C" & i + 23).Copy h2.Cells(2, j)
j = j + 1
k = k + 1
Next
End Sub

No he hecho lo de las horas en la primera columna todavía, pero eso me preocupa menos. Gracias por enviarme la macro original. Saludos,

Tony Huertas

Te anexo la macro actualizada

Sub CopiarDatos()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Cells.Clear
    j = 2
    h1.Range("B2:B25").Copy h2.[A2]
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row Step 24
        h2.Cells(1, j) = h1.Cells(i, "A")
        h1.Range("C" & i & ":C" & i + 23).Copy h2.Cells(2, j)
        j = j + 1
    Next
End Sub
Respuesta
1

Esto lo haces con una tabla dinámica:

En las etiquetas de fila pones el campo Hora de muestreo

En las etiquetas de columna pones el campo Fecha

En los valores pones el promedio de Potencia (interpreto que sólo tienes un valor por hora y fecha, en el caso que hubiera más de uno el promedio sería más representativo)

¡Gracias Miguel! 

He intentado con tablas dinámicas, pero como nunca las he usado, no me sale lo que busco. No obstante he probado con una macro que me ha facilitado un compañero y con algunas modificaciones, he conseguido lo que buscaba.

Te agradezco muchísimo tu interés por ayudarme.

Tony

OK, de todas formas te recomiendo que sigas explorando el tema de las tablas dinámicas porque te da mucho más juego que la macro a la hora de analizar, agrupar, formatear la información, organizar la presentación de formas variadas etc, con un par de clics de ratón.

Para que empieces te sitúas con el cursor encima de tu base de datos, das a datos, insertar, tabla dinamica, ahí te detecta automáticametne el rango de los datos, aceptas y te sale un asistente con los campos de información de tu base que puedes arrastrar a alguna de las posibles posiciones, etiquetas de column, fila, etc. En valores siempre pon un campo numérico. Es muy fácil.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas