Excel - 如果特定单元格发生更改,则按列自动排序

时间:2015-03-27 12:28:01

标签: excel vba sorting excel-vba

我在Excel(2010)中有一个可刷新的报告。单元格S3包含唯一的8位数字,每次刷新报表时都会有所不同。第1行和第2行只是标题和其他信息;实际数据在第3行向下返回

我希望能够做的是让报告自动对第3行向下的数据进行排序,按列F进行AZ排序(当然还有所有相邻数据及其各自的行,如果有意义的话) )如果细胞S3的内容被改变了。

这可以在VBA中使用吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Worksheet_Change这样的事件:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    If Target.Column = 19 And Target.Row = 3 Then 
      Dim lastrow As Long
      lastrow = Cells(Rows.Count, 2).End(xlUp).Row
      Range("A3:F" & lastrow).Sort key1:=Range("F3:F" & lastrow), _
           order1:=xlAscending, Header:=xlNo
    End If 
End Sub

有关排序,请参阅here。 但是:

  

在重新计算过程中更改单元格时不会发生此事件。   使用Calculate事件捕获工作表重新计算。

如果需要检查重新计算导致的值更改,则必须将旧单元格的S3值存储在变量中,并将此旧值与新值进行比较。请参阅this answer