Cambiar columnas meses y valores a filas

Saludos;
Tengo una hoja de excel donde la primera columna corresponde a meses y la segunda a los valores diarios correspondientes a cada mes (columna A:enero, febrero, marzo...;columna B: datos correspondiente a cada mes) de varios años. En la columna A aparece el mes repetido tantas veces como días tiene; es decir, enero 31 veces,febrero 28....y en la columna B el valor correspondiente cada día.

Mi problema radica en que tengo que cambiar los meses a filas y debajo, cada valor correspondiente a cada mes de los años que tengo valores. Quedaría: filas; A1: enero B1: febrero C1: marzo D1:abril F1:mayo...; y debajo los valores de cada día del mes. Tengo una macro que lo hace al revés; cambia de filas a columnas; pero no encuentro la forma de hacerlo de columnas a filas.

1 respuesta

Respuesta
1

¿Has intentado transponiendo los datos en lugar de utilizar una macro?

1. Copiar los datos

2. Pegado especial

3. Seleccionas la casilla Transponer

4. Aceptar

Dime si eso te sirve, y si no, pon el código que ya tienes para ver cómo se puede modificar.

Gracias por contestar; utilizar la herramienta transponer sería la solución más sencilla. El problema es que en la columna A tengo cada mes repetido tantos días como tiene cada mes y en la columna B los datos de cada día; por ejemplo; enero: 31 vez en A y en B los 31 datos correspondientes. Si utilizo transponer me saldría 31 filas de enero, 28 de febrero...Yo necesito que al cambiar a filas me salga una sola fila por mes; en, por ejemplo, C, enero, y en C1, C2, C3....los valores de B para enero; en D, febrero y debajo los valores correspondientes a los 28 días de febrero. No sé si me explico bien es un poco complicado.

Sub pasar_a_columnas()
     Dim fIni As Double, fila As Double
     Dim cIni As Double, col As Double
     Dim hoja As Worksheet
     Dim mes As String, i As Double
     Dim colMeses As String, colValores As String
    ''------- Configuración ---------
     Set hoja = Hoja1
     fIni = 1        ''Fila en la que inicia el copiado
     cIni = 4        ''Columna en la que inicia el copiado
     fila = fIni    ''Fila destino de la copia
     col = cIni - 1 ''Columna destino de la copia
     mes = ""
     colMeses = "A"    ''Columna que contiene el nombre de los meses
     colValores = "B"  ''Columna que contiene los valores
     i = 1             ''Fila en la que inician los datos
    ''-------------------------------
     Do Until hoja.Range(colMeses & i).Value = ""
         If mes = hoja.Range(colMeses & i).Value Then
             hoja.Cells(fila, col) = hoja.Range("B" & i).Value
         Else
             col = col + 1
             fila = fIni
             hoja.Cells(fila, col) = hoja.Range(colMeses & i).Value
             fila = fila + 1
             hoja.Cells(fila, col) = hoja.Range(colValores & i).Value
         End If
         fila = fila + 1
         mes = hoja.Range(colMeses & i).Value
         i = i + 1
     Loop
End Sub

Si entendí bien tu idea, esto te debería servir, la única condición es que haya una fila vacía al final de la lista, ya que esa es la condición para terminar el bucle.

En la sección configuración están todas las variables necesarias para hacer que la macro actúe sobre las celdas o rangos que desees.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas