修改范围内的一个单元格后自动对该单元格区域进行排序?

修改范围内的一个单元格后自动对该单元格区域进行排序?

我在电子表格中有许多命名的垂直范围,其中包含名称列表。新名称通常在每个列表的末尾手动添加。显然,这意味着除非手动排序,否则列表不会按字母顺序排列。是否有任何方法(如果需要)通过宏让每个范围在其任何组成单元格被修改后自动排序?这个想法是在给定用户向每个列表/范围添加新名称后立即按字母顺序排序。

我还没有深入研究过 Excel 的 VBA 及其自动排序功能,所以如果答案有点太明显,请原谅我的无知。

答案1

好的,我做到了。按照 Raystafarian 的建议,我处理了事件Worksheet_Change并使用该Range().Sort函数对我的列进行排序。每列都有一个标题,我希望它们按字母顺序升序排列,所以这是我的函数:

Private Sub Worksheet_Change(ByVal Target As Range)
    Range("A2:A100").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
    Range("B2:B100").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
    Range("C2:C100").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes
    Range("D2:D100").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
    Range("E2:E100").Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlYes
    Range("F2:F100").Sort Key1:=Range("F1"), Order1:=xlAscending, Header:=xlYes
End Sub

这可能不是一个特别优雅或万无一失的解决方案,但它完美地解决了我的问题,经过一点培训,用户就会知道不要修改标题列。

谢谢,Raystafarian!

相关内容