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

时间:2017-01-25 20:07:06

标签: excel vba

我有一个列(D)计算它旁边两列的平均值(B,C)。当需要对B或C进行更改时,我需要按照降序自动对D列中公式的结果进行排序.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

1 个答案:

答案 0 :(得分:0)

边缘,

您需要提供一些更多信息,并且您不想检查D列中的更改,而希望检查它依赖于其输入(B和C)的列。

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

HTH

enter image description here