Pasar datos horizontales a verticales según el numero de columnas que tenga el listado mediante una macro

Para Dante Amor

Haciendo uso de una macro quisiera pasar registros que se encuentran de manera horizontal se organizaran de manera vertical (columnas) según un criterio o orden determinado donde unos datos se repiten y otros no.

Le envío el archivo para su mejor compresión.

En otras palabras los valores de la tabla de datos donde cada fila es un registro, se cambien de orden según un orden determinado .

La tabla de datos esta en la hoja uno y que los registros los organice en la hoja dos

1 respuesta

Respuesta
3

Te anexo la macro

Sub Pasar_Datos()
'---
'   Por.Dante Amor
'---
    '
    Set h1 = Sheets("ORIGEN")
    Set h2 = Sheets("DESTINO")
    h2.Range("A7:H" & Rows.Count).Clear
    h2.Columns("H:H").NumberFormat = "m/d/yyyy"
    codigos = Array("510506", "510527", "237005", "238030", "250505")
    '
    j = 7
    For i = 6 To h1.Range("A" & Rows.Count).End(xlUp).Row
        h2.Cells(j, "A") = h1.Cells(i, "A")
        j = j + 1
        n = 0
        dc = "D"
        For k = Columns("D").Column To Columns("H").Column
            h2.Cells(j, "B") = codigos(n)
            If n >= 2 Then
                dc = "C"
                valor = h1.Cells(i, k) * -1
            Else
                valor = h1.Cells(i, k)
            End If
            h2.Cells(j, "C") = valor
            h2.Cells(j, "D") = dc
            h2.Cells(j, "E") = h1.Cells(i, "B")
            h2.Cells(j, "F") = h1.Cells(i, "C")
            h2.Cells(j, "G") = h1.Cells(i, "I")
            h2.Cells(j, "H") = h1.Cells(i, "J")
            j = j + 1
            n = n + 1
        Next
    Next
    h2.Select
    MsgBox "Fin"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas