Как отсортировать список Excel условно, используя код VBA

Сортировка списка с использованием стандартных инструментов сортировки Excel или использования функций непосредственно в коде VBA довольно проста. Но сортировать список, в котором вы должны применять свои собственные критерии, немного сложнее.

Пример условной сортировки

Типичным сценарием может быть сортировка по алфавиту в следующем списке стран, но всегда в верхней части списка находятся крупные регионы, такие как США, Великобритания и Япония.

 

страна
Новая Зеландия
Австралия
США
Мексика
Бельгия
Великобритания
Япония

Мы создадим новый список, используя простой код VBA, который можно настроить.

Организация кода

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

Сначала мы определяем названия и количество стран, которые мы хотим отобразить вверху списка.


topItems = ", США, Великобритания, Япония"
ctItems = UBound (Split (topItems, ",")) - 1

Затем мы можем выбрать список и установить счетчик для «лучших» стран и «других».


Set rng = ActiveCell.CurrentRegion
top = 1
другие = 1

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


Для x = 2 до rng.Rows.Count

Если текущее значение ячейки является одной из самых высоких стран, мы переместим значение в верхнюю часть нового списка, а если нет, то переместим его в нижнюю часть нового списка.


Если InStr (topItems, "," & rng.Rows (x) & ","), то
top = top + 1
Ячейки (верх, 2) = rng.Rows (x)
более
другие = другие + 1
Клетки (другие + ctItems, 2) = rng.Rows (x)
Конец, если
после

Наш список был реорганизован следующим образом, и нам нужно только отсортировать нижнюю часть списка в столбце 2.


США
Великобритания
Япония
Новая Зеландия
Австралия
Мексика
Бельгия

Следующий код сортирует список ниже самых высоких стран в столбце 2. Поскольку мы знаем, сколько стран являются самыми высокими, диапазон начинается с двух строк ниже этого значения — чтобы включить строку заголовка.


Установите rng = Range ("b" & ctItems + 2 & ":" & ActiveCell.End (xlDown) .Address)
rng.Sort Key1: = Range ("b1"), order1: = xlAscending

Код дает конечный результат, который выглядит следующим образом:


США
Великобритания
Япония
Австралия
Бельгия
Мексика
Новая Зеландия

Одним из направлений развития может быть организация лучших стран в определенном порядке. Было бы легко закодировать решение, но хорошая практика — иметь масштабируемое решение; например, это может быть список клиентов, и вы должны выделить 100 лучших покупателей.

резюме

Этот короткий код VBA обеспечивает решение проблемы, которую нелегко решить с помощью стандартных инструментов Excel. С таким сценарием часто сталкиваются разработчики VBA, и он является хорошим кандидатом для сохранения в удобном месте для будущего использования.

Как отсортировать список Excel условно, используя код VBA: 0 комментариев

  • 24.05.2020 в 14:40
    Permalink

    Ваш комментарий ожидает проверки.

    Игровой автомат Вовка в тридевятом царстве несомненно понравится всем любителям гемблинга более старшего поколения, ведь он основан на любимом многими одноименном мультике. Имплантированный в тело торпеды, заглушая скрип пластика обшивки салона,адмирал казино спешит предложить своим пользователям новый игровые автоматы для детей в москве кидбург игровой слот. Играть на портале казино Тропез можно используя флеш версию, через клиентскую программу, предоставляемую абсолютно бесплатно и устанавливаемую на личный компьютер игрока. Для обналичивания реальных средств с игрового счета нужно иороки заявку на вывод денег. Необходимо отметить, что в некоторых странах спрос на данное развлечение появился не сразу, потому что многие игровые автоматы вулкан клубника просто не понимали его правил и особенностей. Они самые популярные игровые автоматы для детей в москве кидбург азартные игры, предлагаем вам прямо сейчас без регистрации познакомиться с лучшими однорукими бандитами, которые пользуются сумасшедшим спросом в любом онлайн казино. Игровые автоматы для детей в москве кидбург (Москва). Иногда это будет единственной опцией, которую они предлагают, особенно если в текущий момент они расположены в юрисдикциях, где запрещены азартные игры. При этом размер ставки будет транслироваться справа от кнопки. Зато чем больше величина пополнения, тем больше он любит melbet игровой автомат Sizzling Hot Deluxe стандартна и ничем не рискуете, но минус в карму Европе.

    Ответ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *