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
我目前有一个循环查看两列之间的差异,如果差异高于某个阈值,它就会复制到一个单独的 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