在 D 中输入新数据时排序 table,但按照此条目到新位置
Sort table when new data is entered in D, but follow this entry to new position
我有一个排序 excel table 的基本代码,它运行良好:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes
End Sub
但是,在C中输入数据时,在大table中查找条目很麻烦,请问排序时是否可以按照记录到新的位置?如果是,我该如何更正代码?
谢谢!
有多种方法可以做到这一点。其中之一如下所示。
以下解决方案使用 Worksheet_Change()
而不是 Worksheet_SelectionChange()
。这个想法是存储新添加的值(以下假设您直接在 C 列中键入以添加新值。如果您在 D 列中有特定位置,请更改 if
条件以检查该位置的更改.) 然后排序后搜索。每增加一个新值,排序后会滚动到新增加的值。您可以根据自己的使用情况进行调整。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim val As Variant
If Target.Column = 3 Then
val = Target.Value
Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes
ActiveWindow.ScrollRow = Application.WorksheetFunction.Match(val, Range("C3", Range("C3").End(xlDown)), 0) + 2
End If
End Sub
我有一个排序 excel table 的基本代码,它运行良好:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes
End Sub
但是,在C中输入数据时,在大table中查找条目很麻烦,请问排序时是否可以按照记录到新的位置?如果是,我该如何更正代码?
谢谢!
有多种方法可以做到这一点。其中之一如下所示。
以下解决方案使用 Worksheet_Change()
而不是 Worksheet_SelectionChange()
。这个想法是存储新添加的值(以下假设您直接在 C 列中键入以添加新值。如果您在 D 列中有特定位置,请更改 if
条件以检查该位置的更改.) 然后排序后搜索。每增加一个新值,排序后会滚动到新增加的值。您可以根据自己的使用情况进行调整。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim val As Variant
If Target.Column = 3 Then
val = Target.Value
Range("C3", Range("C3").End(xlDown)).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlYes
ActiveWindow.ScrollRow = Application.WorksheetFunction.Match(val, Range("C3", Range("C3").End(xlDown)), 0) + 2
End If
End Sub