1

У меня есть несколько именованных вертикальных диапазонов в электронной таблице, содержащей списки имен. Новые имена обычно добавляются вручную в самом конце каждого списка. Очевидно, это означает, что без сортировки вручную списки не будут располагаться в алфавитном порядке. Есть ли способ, с помощью макроса, если необходимо, чтобы каждый диапазон автоматически сортировал себя после изменения любой из его компонентных ячеек? Идея состоит в том, чтобы каждый список / диапазон сортировался в алфавитном порядке сразу после того, как данный пользователь добавил к нему новое имя.

Я не особо углублялся в VBA для Excel и не занимался автоматизацией его функций сортировки, поэтому простите мое невежество, если ответ слишком очевиден.

1 ответ1

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

Возможно, это не слишком элегантное или надежное решение, но оно отлично решает мою проблему, и, пройдя некоторое обучение, пользователи узнают, что не нужно изменять столбцы заголовков.

Спасибо, Райстафариан!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .