![Ordenar filas: 6 transacciones con información de fecha y acción agrupadas](https://rvso.com/image/1597820/Ordenar%20filas%3A%206%20transacciones%20con%20informaci%C3%B3n%20de%20fecha%20y%20acci%C3%B3n%20agrupadas.png)
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).
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 A1
y que no hay celdas vacías en la primera columna. El valor codificado 23
se debe a que usted mencionó que solo habría seis transacciones. Deberá aumentar este número en 4 por cada transacción adicional.