Macro para transponer datos en Excel

Tengo una planilla con datos horizontales y necesito que una macro pueda ponerlos de forma vertical, dependiendo del código de clasificación.

EJEMPLO DEL ORIGINAL

EJEMPLO DEL RESULTADO

1 Respuesta

Respuesta
2

Prueba con esta macro, este es el resultado

Sub TRANSPONER_DATOS()
Set DATOS = Range("A1").CurrentRegion
TITULOS = Array("CODIGO", "FAMILIA", "NOMBRE", "REGION", "PERIODO", "SI/NO")
With DATOS
    F = .Rows.Count: C = .Columns.Count
    .Columns(5).Resize(F, C - 4).Select
    .Replace What:="x", Replacement:="si"
    .Replace What:="", Replacement:="no"
    .Rows(F + 4).CurrentRegion.Clear
    Set RESULTADOS = .Rows(F + 4).Resize(1, 6)
End With
With RESULTADOS
    .Value = TITULOS
    .EntireColumn.AutoFit
    .Font.Bold = True
    .Select
End With
With DATOS
    Set DATOS = .Rows(2).Resize(F - 1, C)
    For I = 1 To F - 1
        If I = 1 Then Set RESULTADOS = RESULTADOS.Rows(2).Resize(C - 4, 6)
        If I > 1 Then Set RESULTADOS = RESULTADOS.Rows(C - 3).Resize(C - 4, 6)
        RESULTADOS.Columns(1).Value = .Cells(I, 1)
        RESULTADOS.Columns(2).Value = .Cells(I, 2)
        RESULTADOS.Columns(3).Value = .Cells(I, 3)
        RESULTADOS.Columns(4).Value = .Cells(I, 4)
        RESULTADOS.Columns(5) = WorksheetFunction.Transpose(.Cells(0, 5).Resize(1, C - 4))
        RESULTADOS.Columns(6) = WorksheetFunction.Transpose(.Cells(I, 5).Resize(1, C - 4))
    Next I
    RESULTADOS.EntireColumn.AutoFit
    With DATOS
        .Columns(5).Resize(F, C - 4).Select
    .Replace What:="SI", Replacement:="X"
    .Replace What:="NO", Replacement:=""
    End With
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas