Excel VBA将自动对单元格中包含公式的列进行排序?
我有一列(D)计算它旁边两列(B,C)的平均值。当对B或C进行更改时,我需要按降序对D列中公式的结果进行自动排序。D列单元格包含公式=IFERROR(C2/B2,0) B和C通过一个公式进行更新,该公式添加了另一张表中的数据Excel VBA将自动对单元格中包含公式的列进行排序?,excel,vba,Excel,Vba,我有一列(D)计算它旁边两列(B,C)的平均值。当对B或C进行更改时,我需要按降序对D列中公式的结果进行自动排序。D列单元格包含公式=IFERROR(C2/B2,0) B和C通过一个公式进行更新,该公式添加了另一张表中的数据 a b c d 5L2R 1 0 0% 5R2T 2 0 0% 5P1V 1 1 100% 611Q 1 1 100% 5I31 1 1 100% 5N
a b c d
5L2R 1 0 0%
5R2T 2 0 0%
5P1V 1 1 100%
611Q 1 1 100%
5I31 1 1 100%
5N32 1 1 100%
642O 1 1 100%
我从其他类似的帖子中尝试了各种不同的代码,但都不起作用
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("D:D")) Is Nothing Then
Range("D1").Sort Key1:=Range("D2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub
边缘,
您需要提供更多的排序信息,并且不希望检查D列的更改,而是检查其输入所依赖的列(B&C)
嗯
Brink
您需要提供更多的排序信息,并且不希望检查D列的更改,而是检查其输入所依赖的列(B&C)
嗯
您需要使用工作表\u Calculate()事件。虽然
Target
不是此事件的一部分,需要稍微更改代码。谢谢@ScottCraner。你能再深入一点吗?我对编写vba代码不太了解。您需要使用工作表_Calculate()事件。虽然Target
不是此事件的一部分,需要稍微更改代码。谢谢@ScottCraner。你能再深入一点吗?我对编写vba代码知之甚少。我会尝试一下,尽管我通过在工作表中添加排序按钮找到了解决方法,当我需要对数据进行排序时,我会使用它。我会尝试一下,尽管我通过在工作表中添加排序按钮找到了解决方法,当我需要对数据进行排序时,我会使用它。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lLastRow As Long
If Not Intersect(Target, Range("B:C")) Is Nothing Then
lLastRow = [A1].End(xlDown).Row
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("D1:D" & lLastRow), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
.SetRange Range("A1:D" & lLastRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End Sub 'Worksheet_Change