Как настроить сортировку строк и чисел в VBA - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь отсортировать столбец в моей таблице Excel, который содержит числа, строки и «пусто». Моя цель - отсортировать числа по убыванию, за которыми следуют пустые, а затем по убыванию строк.

Пример данных с 4 строками приведен в таблице ниже.

Columns("A:A").Sort key1:=Range("A2"), order1:=xlDescending

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

     Initial    Failed_Code  Desired_Output

1    6566       String       6566
2               6566         700
3    700        700          
4    String                  String

1 Ответ

0 голосов
/ 09 января 2020

Обычно вы можете указать порядок сортировки в списке и использовать параметр OrderCustom сортировки VBA, например, в принятом ответе Кодировать сортировку VBA в Excel с пользовательским заказом и значением, содержащим запятые . Однако, поскольку вы сортируете целые числа и строки, обычно рекомендуется вспомогательный / вспомогательный столбец ( Пользовательская сортировка в Excel по первому символу и пользовательскому неалфавитному порядку. ,) - более простое решение. и здесь, тем более что в пользовательских списках невозможны подстановочные знаки (https://www.mrexcel.com/board/threads/custom-sort.471612/).

Поскольку ! - первый символ, следующий за управляющими символами в ASCII таблица и Windows порядок сортировки ( Какой первый символ в порядке сортировки используется Windows Explorer? ) записывают макрос, который создает вспомогательный столбец в соответствии с первым символом в ячейках, которые вы хотите sort ( Как проверить первый символ в значении ячейки ), если этот первый символ представляет собой букву, предшествующую !, затем выполнить сортировку по вспомогательному столбцу в порядке убывания.

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

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