【问题标题】:VBA looping through range and sorting onto separate spreadsheetVBA遍历范围并排序到单独的电子表格
【发布时间】:2021-10-25 18:48:27
【问题描述】:

我目前有一个循环来查看两列之间的差异,如果差异高于某个阈值,则它会复制到单独的工作表中。截至目前,循环运行良好。

表 1

A B C
Fruits 400 200
Veggies 450 50
Produce 100 50
Clean 1000 100

代码与我使用的类似:

Dim i As Long, lastRow As Long
Set Sheet1 = Sheet1
Set Sheet2 = Sheet2
J = 2

lastRow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row


For i = 2 To lastRow

    If B - C  >= 200  Then

    Sheet2.Range("A" & J).Value = Format(J - 2, "000") + 1
    Sheet2.Range("B" & J).Value = Sheet1.Range("A" & i)
    Sheet2.Range("C" & J).Value = Sheet1.Range("B" & i)
    Sheet2.Range("D" & J).Value = Sheet1.Range("C" & i)
    Sheet2.Range("E" & J).Value = Sheet2.Range("C" & i).Value - Sheet2.Range("D" & i).Value

    J = J + 1

    End If

Next i

Sheet2 循环结果

A Count B Type C 2020 D 2021 E 2020 -2021
1 Fruits 400 200 200
2 Veggies 450 50 400
3 Clean 1000 100 900

但是,我想按降序对列 E 的循环 sheet2 结果进行排序,如下所示。谁能提供对循环结果进行排序的最佳方法?

Sheet2 循环结果以降序排序

A Count B Type C 2020 D 2021 E 2020 -2021
1 Clean 1000 100 900
2 Veggies 450 50 400
3 Fruits 400 200 200

【问题讨论】:

    标签: excel vba loops sorting range


    【解决方案1】:

    在您发布的代码中将其添加到您的例程下方。

    (注意更正表)。

    With Sheet2.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range("E:E") _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange Range("A:E")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    

    【讨论】:

    • 注意,我更正了一个错误的 sheet2 的错误。
    • 谢谢。我可以通过插入我的计数器并将其置于您提到的常规之外来进行排序。
    猜你喜欢
    • 2020-08-06
    • 2018-05-11
    • 1970-01-01
    • 2020-12-31
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2019-06-05
    相关资源
    最近更新 更多