Сортировка Vba Excel по столбцу

Обновлено: 21.11.2024

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

Когда люди говорят о "сортировке столбцов" или "сортировке столбцов", они объединяют две идеи: сортировка полных столбцов (строки от 1 до 65 000+) и сортировка диапазона с использованием столбца в качестве ключа . Люди объединяют эти две идеи, потому что они очень похожи. Из-за их сходства мы рассмотрим оба.

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

Пример данных

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

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


Пример данных

Узнаете ли вы какие-нибудь имена?

Функция сортировки

Да, мы знаем, что назвали это функцией, но .Sort на самом деле является методом. Метод .Sort в VBA довольно прост, хотя поначалу может показаться сложным, если у вас включен Intellisense:


Страшно длинный Intellisense для сортировки

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

  • Ключи — это данные, по которым следует сортировать
  • Заказы расположены по возрастанию или по убыванию
  • Заголовок включает или исключает первую строку
  • OrderCustom использует отдельную структуру данных, в которой хранятся ваши собственные критерии сортировки (например, дни недели M, T, W, Th…)
  • По умолчанию для параметра "Ориентация" выбрано значение "Строки", что означает, что строки "двигаются" вверх и вниз. Установите значение xlSortColumns, чтобы «перемещать» столбцы влево и вправо.
  • SortMethod применим только к ханзи (китайским иероглифам)
  • Параметры данных соответствуют соответствующим им ключам и по умолчанию обрабатывают текстовые и числовые данные отдельно. Установите значение xlSortTextAsNumbers, чтобы смешать их

Решите, какой диапазон сортировать

Обычно пользователи хотят отсортировать целые столбцы (строки с 1 до конца). Этого можно добиться, используя подмножество коллекции Columns. Этот блок кода сортирует все данные в столбцах A, B, C и D, используя параметры сортировки по умолчанию:

Иногда у вас могут быть формулы или другая информация в строках после таблицы данных. В этом случае вы захотите отсортировать по «более короткому» диапазону, скажем, строки с 1 по 50. Возможно, из строки 51 у вас есть другой набор данных, которые не следует сортировать. В качестве альтернативы, возможно, у вас есть аналитика в верхней части листа над данными, которые должны быть отсортированы. Например, возможно, сортируемые данные начинаются только с 20-й строки. В этом случае вы должны использовать объект диапазона. Этот фрагмент сортирует только квадратный блок от ячейки A20 до ячейки D100, оставляя аналитику, введенную в ячейки от A1 до D19, нетронутой:

Вы можете использовать подход "Диапазон" и охватить большую область, например, от строки 20 до строки 20 000. Вот несколько общих практических правил использования .Sort :

  • Используйте Columns.Sort, если у вас есть только сортируемые данные в столбцах и вы точно не знаете, где они заканчиваются.
  • Используйте Range.Sort, если у вас есть несортируемые данные в тех же столбцах, что и сортируемые данные.

Применить функцию сортировки

Теперь, когда вы определились с правильным диапазоном, давайте приступим к сортировке! Во-первых, мы должны оценить наши потребности для нашей гипотетической деловой ситуации:

  1. Мы решили отсортировать по городу и сумме.
  2. Мы определили, что у наших данных есть заголовки.
  3. У нас нет данных, которые нельзя отсортировать
  4. Мы не знаем, сколько заказов будет у нас каждый день

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

Точка 2 означает, что мы должны установить для параметра Header значение xlYes или xlGuess . Последнее позволяет Excel угадать, существуют ли заголовки. Поскольку мы уже знаем, что у нас есть заголовки, лучше быть явным и установить для заголовка значение xlYes, а не полагаться на логику алгоритма угадывания Excel.

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

Итак, для точки 1 мы хотим использовать столбец "Город" в качестве первого ключа и "Сумма" в качестве второго ключа. Для SortOrder xlDescending соответствует порядку 9 → 0 и Z → A. Обычно мы использовали бы A → Z для городов. Для сумм мы хотим, чтобы самая большая была в верхней части группы City, поэтому давайте используем xlDescending для Amount и xlAscending для City .

Мы можем отсортировать столбцы от A до E вместе, поэтому давайте укажем коллекцию Columns как Columns("A:E") .

Все вместе это выглядит так:

Фу! Это длинное выражение VBA, но все работает так, как мы и ожидали:


Примеры данных, отсортированные по городу (A–Z) и сумме (9–0)

Красное поле показывает сортировку городов от A → Z, а синее и зеленое поля показывают убывающее количество городов в Аннаполисе и Балтморе соответственно.

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

На самом деле это довольно аккуратно. Если у вас есть проблемы с пониманием или запоминанием, вам может помочь наш бесплатный комплект разработчика VBA. Он содержит сочетания клавиш VBA, которые помогут вам создавать собственные макросы, подобные этому. Мы отправим копию вместе с нашей Большой книгой макросов Excel VBA на указанный ниже адрес электронной почты.

Нужно ли указывать, какие столбцы?

В приведенном выше коде мы использовали Columns("A:E"), чтобы указать, что мы хотим отсортировать только столбцы A, B, C, D и E. Если вы просто используете коллекцию Columns, все столбцы на листе будет отсортировано. Если вы не уверены, есть ли в вашей электронной таблице данные, которые не следует сортировать, я рекомендую явно указать столбцы для сортировки. Иногда создатели электронных таблиц сохраняют статические данные в столбце AA или аналогичном столбце далеко справа. Если вы используете всю коллекцию Columns, не указывая, какие столбцы, эти статические данные также будут переупорядочены.

При сбое xlGuess

Очень простой способ увидеть, почему алгоритм обнаружения заголовков по умолчанию, xlGuess, дает сбой, — попробовать следующий код:


xlGuess угадал неправильно

Данные сортируются по ключу фамилии в столбце A, но, поскольку Excel неправильно определил заголовки, заголовок был отсортирован так, как если бы он также был именем. Это очень распространено, когда тип данных вашего заголовка, в данном случае String, совпадает с типом данных в столбце.

Последнее слово

Используйте .Sort для объекта Range или коллекции Columns для сортировки данных на основе рассматриваемых столбцов. Макрос для сортировки может быть как простым, как указание одного столбца в качестве ключа ( Columns.Sort Columns(1) ), так и сложным, как ключи наслоения для групп (группа городов, затем сортировка сумм по убыванию) при сужении данных путем вызова определенных диапазонов. (Столбцы("A:C").Сортировка). Если вы начнете заниматься индивидуальными заказами и ориентацией, все может быть еще сложнее.

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

Если вам интересно: в честь архитектора Вальтера Гропиуса названы имена тех, кто подписал Декларацию независимости США.

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

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Эта статья была написана Кори Сарвером, автором статей для блога VBA Tutorials. Посетите его в LinkedIn и на его личной странице.

В Excel уже есть несколько способов быстрой сортировки данных.

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

Тогда зачем вам знать, как это сделать с помощью VBA?

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

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

Кроме того, если вы создаете информационные панели Excel, вы можете поднять возможности сортировки Excel на новый уровень, позволив пользователю сортировать данные, просто дважды щелкнув заголовок (как показано ниже).

Я расскажу, как это сделать позже в этом уроке. Давайте сначала быстро разберемся с основами.

Это руководство охватывает:

Понимание метода Range.Sort в Excel VBA

При сортировке с помощью VBA необходимо использовать в коде метод Range.Sort.

Диапазон — это данные, которые вы пытаетесь отсортировать. Например, если вы сортируете данные в формате A1:A10, тогда «Диапазон» будет равен «Диапазон» («A1:A10»).

Вы также можете создать именованный диапазон и использовать его вместо ссылок на ячейки. Например, если я создаю именованный диапазон «DataRange» для ячеек A1: A10, я также могу использовать Range («DataRange»)

При использовании метода сортировки вам необходимо предоставить некоторую дополнительную информацию с помощью параметров. Ниже приведены основные параметры, которые вам необходимо знать:

  • Ключ — здесь вам нужно указать столбец, который вы хотите отсортировать. Например, если вы хотите отсортировать столбец A, вам нужно использовать key:=Range("A1")
  • Порядок — здесь вы указываете, хотите ли вы сортировать по возрастанию или по убыванию. Например, если вы хотите отсортировать по возрастанию, используйте Order:=xlAscending
  • Заголовок — здесь вы указываете, есть ли у вашего набора данных заголовки или нет. Если у него есть заголовки, сортировка начинается со второй строки набора данных, иначе — с первой. Чтобы указать, что ваши данные имеют заголовки, вы будете использовать Header:=xlYes

Хотя в большинстве случаев этих трех параметров достаточно, подробнее о параметрах можно прочитать в этой статье.

Теперь давайте посмотрим, как использовать метод Range.Sort в VBA для сортировки данных в Excel.

Сортировка одного столбца без заголовка

Предположим, у вас есть один столбец без заголовка (как показано ниже).

Вы можете использовать приведенный ниже код для сортировки в порядке возрастания.

Обратите внимание, что я указал диапазон данных вручную как Range("A1:A12").

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

Обратите внимание, что вместо Range("A1:A12") я использовал Range("A1", Range("A1").End(xlDown)).

Это проверит последнюю последовательно заполненную ячейку в столбце и включит ее в сортировку. В случае наличия пробелов будут учитываться данные только до первой пустой ячейки.

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

Теперь позвольте мне быстро объяснить параметры, используемые в приведенных выше примерах:

  • Key1:=Range("A1") — указан A1, чтобы код знал, какой столбец сортировать.
  • Order1:=xlAscending — порядок указан как xlAscending. Если вы хотите, чтобы он был в порядке убывания, используйте xlDescending.
  • Header:= xlNo — указано, что заголовков нет. Это также значение по умолчанию. Таким образом, даже если вы опустите это, ваши данные будут отсортированы с учетом отсутствия заголовков.

Не знаете, куда поместить этот код VBA и как запустить макрос? Прочтите это руководство!

Сортировка одного столбца с заголовком

В предыдущем примере у набора данных не было заголовка.

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

Предположим, у вас есть набор данных, как показано ниже:

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

Обратите внимание, что я создал именованный диапазон — DataRange и использовал этот именованный диапазон в коде.

Сортировка нескольких столбцов с помощью заголовков

До сих пор в этом руководстве мы видели, как сортировать один столбец (с заголовками и без них).

А что, если вы хотите отсортировать по нескольким столбцам.

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

Вот код, который будет сортировать несколько столбцов за один раз.

Ниже показан результат, который вы получите.

В приведенном выше примере данные сначала сортируются по коду штата (столбец A). Затем в данных кода состояния они снова сортируются по хранилищу (столбец B). Этот порядок определяется кодом, в котором вы его упоминаете.

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

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

Как показано ниже:

Ниже приведен код, который позволит вам это сделать:

Обратите внимание, что я создал именованный диапазон ("DataRange") и использовал его в коде вместо ссылок на ячейки.

Как только вы дважды щелкаете любой из заголовков, код отключает обычную функцию двойного щелчка (чтобы перейти в режим редактирования) и использует эту ячейку в качестве ключа при сортировке данных.

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

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

Куда поместить этот код?

Вам нужно вставить этот код в окно кода листа, в котором вы хотите использовать эту функцию сортировки двойным щелчком.

  • Щелкните правой кнопкой мыши вкладку листа.
  • Нажмите "Просмотреть код".
  • Вставьте код в окно кода листа, на котором находятся ваши данные.

Что делать, если вы хотите отсортировать первые два столбца ("Состояние" и "Магазин") в порядке возрастания, а столбец "Продажи" - в порядке убывания.

Вот код, который это сделает:

В приведенном выше коде проверяется, является ли ячейка, по которой дважды щелкнули, заголовком «Продажи» или нет. Если да, то переменной SortOrder присваивается значение xlDescending, в противном случае — xlAscending.

Теперь давайте пойдем еще дальше и покажем визуальный маркер (стрелка и цветная ячейка) в заголовке, когда он отсортирован.

Как показано ниже:

Для этого я добавил новый рабочий лист и внес в него следующие изменения (вы можете скачать файл примера и следовать ему):

  • Название нового листа изменено на BackEnd.
  • В ячейке B2 введите символ стрелки (для этого перейдите в меню «Вставка» и нажмите «Символ»).
  • Скопируйте и вставьте заголовки из набора данных в ячейку A3:C3 на листе Backend.
  • Используйте следующую функцию в ячейке A4:AC4:
  • Остальные ячейки будут автоматически заполнены кодом VBA при двойном щелчке по заголовкам для сортировки столбца.

Ваш внутренний лист будет выглядеть так, как показано ниже:

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

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

В Excel есть отличные средства сортировки диапазона табличных данных с помощью ленты в интерфейсе Excel, и в какой-то момент вы, вероятно, захотите использовать эту функцию в своем коде VBA. К счастью, это очень легко сделать.

Диалоговое окно внешнего интерфейса можно открыть, щелкнув значок «Сортировка» в группе «Сортировка и фильтр» на вкладке «Данные» на ленте Excel. Сначала необходимо выбрать диапазон табличных данных.

Вы также можете использовать Alt-A-S-S, чтобы отобразить диалоговое окно для пользовательской сортировки.

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

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

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

Если пользователь выберет тот же диапазон табличных данных и нажмет значок "Сортировка", он увидит все ваши параметры, которые были введены вашим кодом VBA. Если они хотят сделать что-то вроде своего собственного дизайна, им придется сначала удалить все ваши уровни сортировки, что их очень раздражает.

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

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

Рекомендуется очищать параметры сортировки в VBA до и после завершения сортировки.

Практическое использование метода сортировки в VBA

Когда табличные данные импортируются в Excel, они часто располагаются в произвольном порядке. Он может быть импортирован из файла CSV (значения, разделенные запятыми) или получен из ссылки на базу данных или веб-страницу. Вы не можете полагаться на установленный порядок от одного импорта к другому.

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

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

Используя метод Sort в VBA, вы можете предлагать варианты, позволяющие пользователю легко выполнять сортировку.

Пример данных для демонстрации сортировки Excel с помощью VBA

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

Скопируйте эти данные на рабочий лист (под названием «Лист1») точно так, как показано.

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

Вам не нужны внутренние цвета ячеек и цвета шрифта, если вы не хотите использовать примеры сортировки по ячейкам и цвету шрифта.

Запись макроса для сортировки VBA

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

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

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

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

Например, если вы выполнили простую сортировку приведенных выше примеров данных, отсортировав их по сотруднику, запись сгенерирует следующий код:

Чтобы отсортировать диапазон ячеек с помощью VBA, вам нужно использовать метод «СОРТИРОВКА», который позволяет вам установить один ключ (столбец) или несколько ключей (для нескольких столбцов) для сортировки.Вы также можете определить порядок сортировки (по возрастанию или по убыванию) и указать, есть ли у вас заголовок или нет.

Сортировка диапазона с помощью VBA

  1. Используйте объект диапазона, чтобы указать диапазон, который вы хотите отсортировать.
  2. Введите точку и укажите метод сортировки.
  3. Укажите ключ, который вы хотите использовать для сортировки.
  4. Определите порядок сортировки.
  5. Укажите, есть ли у вас заголовок или нет.

Диапазон("A1:A11").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Header:=xlYes

В приведенном выше коде вы использовали диапазон A1:A11, а в методе сортировки вы использовали восходящий порядок, упомянув, что у вас есть заголовок в диапазоне.

Понимание метода сортировки VBA

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

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

  • Ключ: здесь вам нужно определить ячейку, столбец которой вы хотите использовать в качестве основы для сортировки.
  • Порядок. Порядок сортировки столбца (по возрастанию/убыванию).
  • Заголовок: константа, указывающая, есть ли у вас заголовок или нет, или вы хотите, чтобы VBA угадывал его.

Сортировать по убыванию

В следующем коде я использовал xlDescending для сортировки столбца суммы в порядке убывания.

Диапазон("A1:A13").Ключ сортировки1:=Диапазон("A1"), _ Order1:=xlDescending, _ Orientation:=xlSortColumns

Использование нескольких столбцов (ключей) для сортировки

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

Вот код, который вам нужно использовать:

Range("A1:C13").Sort Key1:=Range("A1"), _ Order1:=xlAscending, _ Key2:=Range("B1"), _ Order1:=xlAscending, _ Header:= XLДа

Как видно из кода, у вас есть ключ1 и ключ2. В ключе 1 у вас есть столбец с именем сотрудника, а в ключе 2 у вас есть столбец города. Для обоих столбцов порядок сортировки по возрастанию, заголовки присутствуют.

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

Изменение ориентации сортировки

При обычной сортировке данных в Excel по умолчанию можно сортировать по столбцам. Но из параметров сортировки вы можете изменить ориентацию сортировки слева направо, а не сверху вниз.

Точно так же у вас есть аргумент в методе sort для изменения ориентации (ссылка).

Диапазон("A1:C13").Ключ сортировки1:=Диапазон("A1"), _ Order1:=xlAscending, _ Orientation:=xlSortRows

Читайте также: