Ordenar datos desordenados de una TABLA en OTRA

La presente es para agradecer a Dios y felicitarles por su invalorables apoyos en nuestras consultas, lo cual quedamos sumamente agradecidos al respecto. Asimismo es para hacerle la siguiente pregunta: Como haríamos para ordenar una tabla que contiene columnas con CÓDIGOS y DATOS Numéricos, en otra donde cada columna contenga solo datos de un CÓDIGOS específicos:

Este es un ejemplo de una tabla con CÓDIGOS Y DATOS desordenados.

A B C D

------------------------------------------------------------

Códigos dato códigos dato
10248 346.2 10289 1154
10104 0.03 10110 8.66
10104 0.01 10015 88.14
10126 119.6 10289 1196
10104 0.01 10015 54.03
10015 88.78 10126 18.74
10104 0.01 10015 84.73
10110 12.05 10126 155.62
10104 0.01 10015 82.32
10248 46.17 10248 461.67

Respuesta
1

Me podrías dar más referencias, por ejemplo, cuáles serían los códigos específicos, en tu ejemplo las columnas A y B se pasar a C y D, podrías ampliar tu ejemplo de cómo está y cómo quisieras que resultara.

Gracias por atender nuestra interrogante lo que se desea es que salgue como resultado la siguiente ordenación de datos por favor:

Códigos: 10015 10104 10110 10126 10248 10289

Datos : 88.78 0.03 12.05 119.60 346.2 11.54

88.14 0.01 8.66 155.62 46.17 119.6

54.03 0.01 18.74 461.67

84.73

82.32

gracias, Dios les bendiga..

Además de las parejas de columnas AyB y CyD, ¿hay más columnas? Cuántas líneas hay hacia abajo, ¿es variable? Y por último, la nueva distribución de códigos con sus respectivos datos, dónde la quieres, ¿puede ser a partir de la letra F?

Asi es hay varias columnas y también hay varias filas abajo es variable. Esta bien, la nueva distribución puede ser a partir de la columna F u otras columnas o también en otra pagina si pudiera ser mejor. Muchísimas Gracias.

Te mando una macro, te va a ordenar por códigos, puedes tener las parejas de columnas código, dato, hacia la derecha, todas las que necesites.
Al final te va a crear una hoja nueva con la tabla nueva ordenada.
La hoja con tu información se debe llamar “Hoja1”, si quieres cambiarle el nombre, puedes modificar la macro, reemplazar “Hoja1” por el nuevo.
Instrucciones
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Para ejecutarla presiona F5

'***Macro***
Sub ordenarcodigos()
'Ordena codigos de filas a columnas
'Por.dam
Application.ScreenUpdating = False
hojacodigos = "Hoja1"
Worksheets(hojacodigos).Select
    ufil = ActiveCell.SpecialCells(xlLastCell).Row
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
Worksheets.Add
hojasalida = ActiveSheet.Name
    ufilsalida = ActiveCell.SpecialCells(xlLastCell).Row
    ucolsalida = ActiveCell.SpecialCells(xlLastCell).Column
Worksheets.Add
hojaordena = ActiveSheet.Name
    ufilordena = ActiveCell.SpecialCells(xlLastCell).Row
    ucolordena = ActiveCell.SpecialCells(xlLastCell).Column
Worksheets(hojacodigos).Select
j = 1
For i = 1 To ucol
    Range(Cells(2, j), Cells(ufil, j + 1)).Select
    Range(Cells(2, j), Cells(ufil, j + 1)).Copy
    Worksheets(hojaordena).Select
    Cells(ufilordena, 1).Select
    ActiveSheet.Paste
    ufilordena = ActiveCell.SpecialCells(xlLastCell).Row
    ucolordena = ActiveCell.SpecialCells(xlLastCell).Column
    ufilordena = ufilordena + 1
    Worksheets(hojacodigos).Select
    j = j + 2
    i = i + 1
Next
    Worksheets(hojaordena).Select
    Columns("A:B").Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1") _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
unavez = 1
For i = 1 To ufilordena
    If unavez = 1 Then
        inicio = i
        unavez = 2
        codant = Cells(i, 1)
    Else
        codnvo = Cells(i, 1)
        If codant = codnvo Then
            final = i
        Else
            Range(Cells(inicio, 2), Cells(final, 2)).Select
            Range(Cells(inicio, 2), Cells(final, 2)).Copy
            Worksheets(hojasalida).Select
            Cells(1, ucolsalida).Value = codant
            Cells(2, ucolsalida).Select
            ActiveSheet.Paste
            ufilsalida = ActiveCell.SpecialCells(xlLastCell).Row
            ucolsalida = ActiveCell.SpecialCells(xlLastCell).Column
            ucolsalida = ucolsalida + 1
            Worksheets(hojaordena).Select
            inicio = i
            codant = codnvo
        End If
    End If
Next
Worksheets(hojasalida).Select
    Rows("1:1").Select
    With Selection.Font
        .Name = "Arial"
        .FontStyle = "Negrita"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Application.DisplayAlerts = False
    Worksheets(hojaordena).Delete
    Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
'***Macro***

Saludos.dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas