Quisiera poder trasponer de una columna con código y las 2 siguientes con datos de manera horizontal.

Favor. Quisiera trasponer de 3 columnas de manera horizontal. La primera columna (A) posee un código y las 2 yacentes (B, C) son los datos que corresponden a un par de coordenadas, La columna A posee varias veces este código: pues son las coordenadas que encierran una figura (columnas B, C).

Ejemplo 1:

RESULTADO ESPERADO para ejemplo 1

Ejemplo 2

RESULTADO ESPERADO Ejemplo 2. 

El número de pares coordenados es variable.

Tengo en una hoja los datos correlativos con diferente id y en otra hoja están sólo las coordenadas y separadas sólo con una fila en blanco sin num ver.

Me gustaría poder realizar el orden con una alternativa desde donde ordenaré los datos. Si son como el ejemplo 1 o como el ejemplo 2 en una hoja ordenada.

Para el caso del ejemplo 2 la columna A (id) que le agregue por defecto un número correlativo.

2 Respuestas

Respuesta
2

Dante. Quiero agradecer por este medio la gran ayuda recibida de su parte dado a que lo solicitado funciona tal como se pidió. La verdad que aún es posible creer en la ayuda desinteresada de la gente.

Respuesta
2

H o l a:

Te ayudo con la primera opción.

Envíame tu archivo en un correo nuevo con el ejemplo1

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jose Buscaglia” y el título de esta pregunta.

Avísame en esta pregunta cuando me lo hayas enviado.

S a l u d o s . D a n t e   A m o r

¡Gracias! Esperando...

Te anexo la macro para el ejemplo 1

Sub Orden()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.StatusBar = False
    Set h1 = Sheets("Datos")
    Set h2 = Sheets("Orden")
    h2.Cells.Clear
    ant = ""
    col = 2
    fil = 1
    wmax = 0
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To u
        Application.StatusBar = "Procesando " & i & " de " & u
        If h1.Cells(i, "A") = ant Then
            col = col + 2
            h2.Cells(fil, col) = h1.Cells(i, "B")
            h2.Cells(fil, col + 1) = h1.Cells(i, "C")
            If col > wmax Then wmax = col
        Else
            fil = fil + 1
            h1.Range("A" & i & ":" & "C" & i).Copy h2.Range("A" & fil)
            col = 2
        End If
        ant = h1.Cells(i, "A")
    Next
    h2.[A1] = h1.[A1]
    n = 1
    For i = 2 To wmax Step 2
        h2.Cells(1, i) = "norte" & n
        h2.Cells(1, i + 1) = "este" & n
        n = n + 1
    Next
    Application.StatusBar = False
    Application.ScreenUpdating = True
    h2.Select
    MsgBox "Fin"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas