Transponer (93f*109c) siguiendo un orden específico para pasar a 13 columnas. Además, arrastrar las 93 filas iniciales 9 veces.

Creemos necesitar una Macro, pero no sabemos hacerla. Tenemos una base de datos ordenada de la siguiente forma:

                           Actv 2019        Actv 2020        Tec 2019        Tec 2020       Rdo 2019      Rdo 2020

Empresa 1        A2019.1               A2020.1             T2019.1           T2020.1         T2019.1           T2020.1

Empresa 2        A2019.2               A2020.2             T2019.2            T2020.2         T2019.2         T2020.2

Empresa 3        A2019.3               A2020.3             T2019.3            T2020.3         T2019.3          T2020.3

Hay, 92 empresas. Queremos pasar al siguiente formato:

                           Actv                    Tec                     Rdo

Empresa 1        A2019.1            T2019.1             R2019.1

Empresa 1        A2020.1            T2020.1             R2020.1

Empresa 2        A2019.2             T2019.2             R2019.2

Empresa 2       A2020.2              T2020.2             R2020.2

Empresa 3        A2019.3             T2019.3             R2019.3

Empresa 3        A2020.3              T2020.3             R2020.3

Cada repetición de empresa, pertenece a un año diferente, (2019 la primera vez, 2020 la segunda).

Además de trasponer de esta determinada manera, tenemos que arrastrar el nombre de cada empresa ya que partimos de la siguiente situación:

Empresa 1

Empresa 2

Empresa 3

Y queremos terminar con la consecución de empresa 1 en 9 filas.

Empresa 1

Empresa 1

Empresa 1

...

Rogamos ayuda, son 4500 empresas por 9 años cada una, además de unas 20 variables.

2 Respuestas

Respuesta
1

No importa la cantidad de empresas ni la cantidad de criterios (Act, Tec, Rdo, etc)

Sí importa en la macro, la cantidad de años y que la información esté en el orden que se observa en la imagen, es decir, todos los Act, luego los Tec, hasta el final.

Y así es como se verá el resultado:

Entra al Editor de macros, inserta un módulo y copia lo siguiente. Debes ajustar el nombre de tus hojas. Y si habrá más de 3 criterios, debes completar las instrucciones donde dejo el comentario 'Atención'.

Sub ordenandoTabla()     
'x Elsamatilde
Dim hUna As Worksheet, hDos As Worksheet
Dim colx As Integer, y As Integer, i As Integer, x As Integer
'Se ejecuta desde la Hoja 1 donde están los datos originales
    Set hUna = Sheets("Hoja1")
'Se arma el nuevo resumen en Hoja 2
    Set hDos = Sheets("Hoja2")
'Total de columnas
    colx = Cells(1, 2).End(xlToRight).Column
'primera fila en destino
    y = 2
'se recorre la Hoja 1 desde la fila 2 hasta el fin de rango.
For i = 2 To hUna.Range("A" & Rows.Count).End(xlUp).Row
    hDos.Range("A" & y) = hUna.Range("A" & i)
    For x = 2 To colx Step 9                            'Atención: 9 años
        'según la letra será la col a copiar
        If Left(Cells(i, x), 1) = "A" Then coly = 2
        If Left(Cells(i, x), 1) = "T" Then coly = 3
        If Left(Cells(i, x), 1) = "R" Then coly = 4   'Atención: completar con el resto de los textos
        'se copian los tramos de los 9 años por cada concepto, empezando por col 2
        Range(Cells(i, x), Cells(i, x + 8)).Copy
        hDos.Cells(y, coly).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
    Next x
    'se completa el rango con el nombre de la empresa
    hDos.Cells(y, 1).Copy Destination:=Range(hDos.Cells(y + 1, 1), hDos.Cells(y + 8, 1))
    y = y + 9
Next i
MsgBox "Fin del proceso.", , "Información"
End Sub

Si necesita de algún ajuste por favor dejame bien claras las referencias: ubicación de las tablas, cantidad de columnas, etc. 

No olvides marcar una valoración (buena o Excelente) debajo de esta respuesta si te ha resuelto tu consulta.

Respuesta

Hola Domingo Javier Santana Martín

Bienvenido al foro de todoexpertos.

Visita:

Cursos de Excel y Macros - YouTube

Por Dante Amor


Te recomiendo utilizar matrices para grandes cantidades de datos:

https://youtu.be/bmCJzc59K3I 

https://youtu.be/f_x8pstpNqc 

https://youtu.be/oAQ4e-m_m7g 

https://youtu.be/DI33KOtxcPk 

https://youtu.be/PupmVvM16-8 


Si tienes dificultades con la macro.

Te sugiero crear un par de archivos. El primer archivo con los datos originales, es decir, como actualmente tienes tus datos. El segundo archivo con los datos tal como los necesitas.

No es necesario que pongas los datos reales, puedes poner datos genéricos, lo importante es que en la hoja los datos conserven la estructura como están actualmente.

Comparte el archivo y archivos en google drive, comparte para cualquiera que tenga el enlace, copias el enlace y lo pegas aquí.

Sal u dos

Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas