排序行:6 笔交易,按日期和操作信息分组

排序行:6 笔交易,按日期和操作信息分组

我需要按日期升序排列电子表格中的交易信息。每行代表一个人及其历史记录中的最后 6 笔交易。问题是,虽然数据库会输出最后 6 笔交易,但它不是按顺序输出的,所以我需要在 Excel 中手动执行此操作。

交易日期和到期日期必须与“是否为礼物”和“操作”数据保持关联,因此使用行排序功能不适用于此应用程序。这四列需要作为一个组放在一起。

在所附的屏幕截图中,我使用颜色来显示列需要如何保持分组并用红色突出显示,如果数据顺序正确,交易应该排在第一位。希望这能更清楚地表明问题所在(每个人的“第一”在不同的列中)以及我的目标是什么(按行按日期升序对每个列组进行排序)。

带注释的截图

答案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。

相关内容