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

Сортирует диапазон значений. Sorts a range of values.

Синтаксис Syntax

Expression. Sort (сортировка ) (Key1, Order1, key2, Type, Order2, Key3, Order3, Header, ордеркустом, MatchCase, Orientation, сортмесод, _ DataOption1_, DataOption2, DataOption3) expression.Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

выражение: переменная, представляющая объект Range. expression A variable that represents a Range object.

Параметры Parameters

Имя Name Обязательный или необязательный Required/Optional Тип данных Data type Описание Description
Key1 Key1 Необязательный Optional Variant Variant Задает первое поле сортировки в виде имени диапазона (String) или объекта Range ; Определяет значения, которые требуется отсортировать. Specifies the first sort field, either as a range name (String) or Range object; determines the values to be sorted.
Order1 Order1 При необходимости Optional XlSortOrder XlSortOrder Определяет порядок сортировки значений, указанных в Key1. Determines the sort order for the values specified in Key1.
Key2 Key2 Необязательный Optional Variant Variant Второе поле сортировки; не может использоваться при сортировке сводной таблицы. Second sort field; cannot be used when sorting a PivotTable.
Type Type Необязательный Optional Variant Variant Указывает, какие элементы будут отсортированы. Specifies which elements are to be sorted.
Order2 Order2 При необходимости Optional XlSortOrder XlSortOrder Определяет порядок сортировки значений, указанных в поле key2. Determines the sort order for the values specified in Key2.
Key3 Key3 Необязательный Optional Variant Variant Третье поле сортировки; не может использоваться при сортировке сводной таблицы. Third sort field; cannot be used when sorting a PivotTable.
Order3 Order3 При необходимости Optional XlSortOrder XlSortOrder Определяет порядок сортировки значений, указанных в Key3. Determines the sort order for the values specified in Key3.
Header Header При необходимости Optional XlYesNoGuess XlYesNoGuess Указывает, содержит ли первая строка сведения о заголовке. Specifies whether the first row contains header information. кслно — значение по умолчанию; Укажите кслгуесс , если вы хотите, чтобы Excel пытался определить заголовок. xlNo is the default value; specify xlGuess if you want Excel to attempt to determine the header.
Ордеркустом OrderCustom Необязательный Optional Variant Variant Указывает целочисленное смещение от единицы в списке настраиваемых порядков сортировки. Specifies a one-based integer offset into the list of custom sort orders.
MatchCase MatchCase Необязательный Optional Variant Variant Установите значение true , чтобы выполнять сортировку с учетом регистра, и false для выполнения сортировки без учета регистра; не может использоваться со сводными таблицами. Set to True to perform a case-sensitive sort, False to perform a non-case-sensitive sort; cannot be used with PivotTables.
Orientation Orientation При необходимости Optional XlSortOrientation XlSortOrientation Указывает, следует ли сортировать по строкам (по умолчанию) или по столбцу. Specifies if the sort should be by row (default) or column. Задайте для параметра кслсортколумнс значение 1, чтобы сортировать по столбцам. Set xlSortColumns value to 1 to sort by column. Задайте для параметра кслсортровс значение 2, чтобы сортировать по строкам (это значение по умолчанию). Set xlSortRows value to 2 to sort by row (this is the default value).
SortMethod SortMethod При необходимости Optional XlSortMethod XlSortMethod Задает метод Sort. Specifies the sort method.
DataOption1 DataOption1 При необходимости Optional XlSortDataOption XlSortDataOption Задает способ сортировки текста в диапазоне, указанном в Key1. не применяется к сортировке сводной таблицы. Specifies how to sort text in the range specified in Key1; does not apply to PivotTable sorting.
DataOption2 DataOption2 При необходимости Optional XlSortDataOption XlSortDataOption Указывает, как сортировать текст в диапазоне, указанном в поле key2; не применяется к сортировке сводной таблицы. Specifies how to sort text in the range specified in Key2; does not apply to PivotTable sorting.
DataOption3 DataOption3 При необходимости Optional XlSortDataOption XlSortDataOption Указывает, как сортировать текст в диапазоне, указанном в Key3; не применяется к сортировке сводной таблицы. Specifies how to sort text in the range specified in Key3; does not apply to PivotTable sorting.
Читайте также:  Ричардсон наташа похороны фото

Возвращаемое значение Return value

Пример Example

В этом примере показано, как получить значение цвета ячейки в столбце A с помощью свойства ColorIndex , а затем использовать это значение для сортировки диапазона по цвету. This example gets the value of the color of a cell in column A by using the ColorIndex property, and then uses that value to sort the range by color.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

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

Мой код до сих пор это:

И аналогично для сортировки По убыванию. Это прекрасно работает для column1. Моя проблема заключается в том, что для столбцов 2, 3, 4 он работает правильно только для тех строк, которые имеют значение в column1 не для любого, которые этого не делают. Например, в изображении ниже сортировок по колонку-правильно сортирует первые 9 строк, но не последние два.

Может кто-нибудь предложить способ, чтобы исправить это? Благодаря!

Я записал простой макрос, который выбирает диапазон ( «А1: D5»), применяет фильтр, затем сортирует в порядке возрастания, основанные на 3-м столбце (C)

Читайте также:  App monitor plugin что это

посмотри на это:

Теперь, там не много нужно сделать, чтобы исправить вашу проблему 🙂

Процедура для сортировки диапазона по любому количеству ключевых полей (строк или столбцов).

sh — лист, на котором происходит сортировка. Если это текущий лист, то укажите ActiveSheet.
fisrt_row, first_col — координаты первой ячейки (в верхнем левом углу диапазона)
last_row, last_col — координаты последней ячейки (в нижнем правом углу диапазона)

Header — содержит ли диапазон заголовки? False/True
Column — сортировать по столбцам (True) или по строкам (False)?

fields — массив, содержащий номера столбцов или строк (в стиле нумерации R1C1) по которым происходит сортировка. Порядок следования в массиве отражает приоритет ключевого поля — сначала сортируется по первому указанному в массиве полю, потом по второму, затем по третьему и т.д. Игнорируются нули и нечисловые элементы, а также ключевые поля не содержащиеся в диапазоне. Дробные числа приводятся к целым.
Значения полей можно указывать отрицательными! В этом случае номер ключевого поля — модуль элемента, данное поле будет сортироваться по убыванию.

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

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

Отсортируем по столбцам. Для этого заполним массив числами от 2 до 16 (номера столбцов на листе) и передадим этот массив в функцию. Укажем что диапазон с заголовками — таковые находятся в строке с нумерацией столбцов.

Читайте также:  Почему доктор хаус хромает

Как видите, в первом столбце диапазона (не забывайте, что первый столбец диапазона это не первый столбец листа) нули и единицы упорядочены. Это в свою очередь разбивает весь диапазон на два горизонтальных поддиапазона: обратите внимание в первой колонке на нули со 2-й строки по 6-ю и на единицы с 7-й по 16-ю. Оба поддиапазона фактически сортируются по следующему столбцу, в их пределах в следующем столбце тоже наблюдаем сортировку по нулям и единицам. Это в свою очередь разбивает поддиапазоны на ещё более мелкие поддиапазоны, которые сортируются по следующему столбцу и так далее. При этом по нумерации строк диапазона можно проверить, что в строках элементы находятся на своих местах.

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

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

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

«>

Оцените статью
Добавить комментарий