Сортировка строк: 6 транзакций с информацией о дате и действии, сгруппированных вместе

Сортировка строк: 6 транзакций с информацией о дате и действии, сгруппированных вместе

Мне нужно организовать информацию о транзакциях в электронной таблице по возрастанию даты. Каждая строка представляет одного человека и последние 6 транзакций в его истории. Проблема в том, что хотя база данных выдает последние 6 транзакций, она делает это не по порядку, поэтому мне нужно сделать это вручную в Excel.

Дата транзакции и дата истечения срока должны быть привязаны к данным "Is Gift" и "Action", поэтому использование функций сортировки строк не работает для этого приложения. Эти четыре столбца должны храниться вместе как группа.

На приложенном снимке экрана я использовал цвета, чтобы показать, как столбцы должны оставаться сгруппированными вместе, и выделил красным транзакцию, которая ДОЛЖНА была быть первой, если бы данные были в правильном порядке. Надеюсь, это даст более четкое представление о проблеме («первые» находятся в разных столбцах для каждого человека) и какова моя цель (чтобы каждая группа столбцов была отсортирована в порядке возрастания даты по строке).

Скриншот с примечаниями

решение1

Попробуйте этот код. Вставьте его в окно редактора VB и запустите (погуглите «как запустить код vba» для получения дополнительной помощи). Это совсем не эффективно, но должно работать.

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

Редактировать

Это предполагает, что ваши данные начинаются с ячейки A1, и в первом столбце нет пустых ячеек. Жестко закодированное значение 23связано с тем, что вы упомянули, что будет только шесть транзакций. Вам нужно будет увеличить это число на 4 для каждой дополнительной транзакции.

Связанный контент