VBA 遍历范围并排序到单独的电子表格

VBA looping through range and sorting onto separate spreadsheet

我目前有一个循环查看两列之间的差异,如果差异高于某个阈值,它就会复制到一个单独的 sheet。截至目前,循环运行完美。

工作表 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

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

(注释更正 sheet)。

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