Excel VBA将自动对单元格中包含公式的列进行排序?

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

我有一列(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%    
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