Ordenar filas: 6 transacciones con información de fecha y acción agrupadas

Ordenar filas: 6 transacciones con información de fecha y acción agrupadas

Necesito organizar la información de las transacciones en una hoja de cálculo por orden de fecha ascendente. Cada fila representa una sola persona y las últimas 6 transacciones de su historial. El problema es que si bien la base de datos escupe las últimas 6 transacciones, no lo hace en orden, por lo que necesito hacerlo manualmente en Excel.

La fecha de la transacción y la fecha de vencimiento deben permanecer vinculadas a los datos "Es regalo" y "Acción", por lo que el uso de funciones de clasificación de filas no funciona para esta aplicación. Estas cuatro columnas deben mantenerse juntas como grupo.

En la captura de pantalla adjunta, utilicé colores para mostrar cómo las columnas deben permanecer agrupadas y resaltadas en rojo, la transacción que DEBERÍA haber ocurrido primero si los datos estuvieran en el orden correcto. Con suerte, esto dará una indicación más clara del problema ("los primeros" están en columnas diferentes para cada individuo) y cuál es mi objetivo (que cada grupo de columnas se ordene, en orden de fecha ascendente, por fila).

Captura de pantalla con notas

Respuesta1

Pruebe este código. Pegue esto en la ventana del Editor VB y ejecútelo (busque en Google 'cómo ejecutar el código vba' para obtener más ayuda). Esto no es nada eficiente, pero debería funcionar.

Sub Some_Sorting_Procedure()
    Dim r As Long, last_row As Long
    Dim i As Long, j As Long
    Dim arr As Variant

    Application.ScreenUpdating = False

    With ActiveSheet
        last_row = .Cells(.Rows.Count, 1).End(xlUp).Row
        For r = 2 To last_row
            For i = 3 To 23 Step 4
                For j = i + 4 To 23 Step 4
                    If .Cells(r, i).Value > .Cells(r, j).Value Then
                        arr = .Cells(r, j).Resize(, 4).Value
                        .Cells(r, i).Resize(, 4).Cut .Cells(r, j)
                        .Cells(r, i).Resize(, 4).Value = arr
                    End If
                Next j
            Next i
        Next r
    End With
End Sub

Editar

Esto supone que sus datos comienzan en la celda A1y que no hay celdas vacías en la primera columna. El valor codificado 23se debe a que usted mencionó que solo habría seis transacciones. Deberá aumentar este número en 4 por cada transacción adicional.

información relacionada