![Classificando linhas: 6 transações com informações de data e ação agrupadas](https://rvso.com/image/1597820/Classificando%20linhas%3A%206%20transa%C3%A7%C3%B5es%20com%20informa%C3%A7%C3%B5es%20de%20data%20e%20a%C3%A7%C3%A3o%20agrupadas.png)
Preciso organizar as informações da transação em uma planilha por ordem crescente de data. Cada linha representa uma única pessoa e as últimas 6 transações em seu histórico. O problema é que embora o banco de dados exiba as últimas 6 transações, ele não o faz em ordem, então preciso fazer isso manualmente no Excel.
A data da transação e a data de vencimento devem permanecer vinculadas aos dados "É Presente" e "Ação", portanto, o uso de funções de classificação de linhas não funciona para este aplicativo. Essas quatro colunas precisam ser mantidas juntas como um grupo.
Na captura de tela anexa, usei cores para mostrar como as colunas precisam permanecer agrupadas e destacadas em vermelho, a transação que DEVERIA ter ocorrido primeiro se os dados estivessem na ordem correta. Espero que isso dê uma indicação mais clara do problema ("primeiros" estão em colunas diferentes para cada indivíduo) e qual é o meu objetivo (que cada grupo de colunas seja classificado, em ordem crescente de data, por linha).
Responder1
Experimente este código. Cole isso na janela do Editor VB e execute-o (google 'como executar o código vba' para obter mais ajuda). Isso não é nada eficiente, mas deve 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
Isso pressupõe que seus dados comecem em cell A1
e que não haja células vazias na primeira coluna. O valor codificado 23
é porque você mencionou que haveria apenas seis transações. Você precisará aumentar esse número em 4 para cada transação extra.