Макрос сортировки по алфавиту excel
Здравствуйте форумчане, осваиваю VBA в Excel
Имеется таблица, прикрепленный файл пример.xls
Нужно отсортировать по алфавиту, пишу вот так:
Макрос на создание сводной таблицы с несколькими столбцами
добрый вечер! имеется таблица, из которой нужно сделать сводную с несколькими столбцами. на.
ListBox с несколькими столбцами
Здравствуйте! Помогите, пожалуйста, найти решение… Заполняю шаблон заявки из формы. Использую.
Как работать в ListBox с несколькими столбцами
Есть ListBox с 4 столбцами (ColumnCount = 4) Есть 4 массива данных: элементу 1 первого массива.
сортирует так, как вы написали команду.
что в вашем понимании "не верно"?
что значит "сбивается"?
предлагаете поиграть в угадайку?
а не проще ли было на втором листе нарисовать ручками "верный" вариант для приведенного примера?
ответ был бы скорее.
впрочем, если вам ответ нужен не так чтобы очень.
ikki
что в вашем понимании "не верно"?
=======
просто таблица больше, около 100 значений и некоторые значения затираются, см пример прикрепленный
Сортирует правильно. И зачем в область сортировки вставлять заголовки? Если уж нужно вставить заголовки, то сначала отсортируй диапазон, а потом вставь заголовки. Кстати, если они нужны для печати (подозреваю, что это так и есть), то лучше воспользоваться т.н. сквозными строками. При печати заголовок будет автоматически вставляться в шапку каждого листа.
Сравнить столбцы таблицы одной книги со столбцами таблицы другой книги
Здравствуйте! такая проблемка. недавно только работаю с Basic, необходимо решить задачу, а.
Выборка из таблицы и сортировка по алфавиту
Помогите, пожайлуста! Имеется таблица в ней 140 строк с до а в каждой из строк есть.
Комбобокс с несколькими столбцами
Здравствуйте! Есть БД на MSSQL. Подключил БД к программе без проблем. Программа может отрабатывать.
Отчет с несколькими столбцами
Здравствуйте! У меня не получилось создать отчет с несколькими столбцами. Нужно сделать так же как.
Синтаксис полного кода VBA Excel, применяемого для сортировки данных в таблицах и диапазонах:
Синтаксис сокращенного кода VBA Excel, применяемого для сортировки данных с параметрами по умолчанию:
Expression – выражение, возвращающее объект Worksheet, например:
Расшифровка кода
1. Expression.Sort – метод Sort объекта Worksheet возвращает объект Sort.
2. .SortFields.Clear – метод SortFields объекта Sort возвращает коллекцию объектов SortFields. Метод Clear объекта SortFields удаляет все существующие объекты SortField.
3. .SortFields.Add Key, SortOn, Order, DataOption – метод Add объекта SortFields создает и возвращает новый экземпляр объекта SortField с заданными параметрами.
Параметры метода Add объекта SortFields:
Key – обязательный параметр, который задает значение ключа для сортировки. Тип данных – Range. Обычно указывается первая ячейка столбца при сортировке по строкам или первая ячейка строки при сортировке по столбцам. Сортировка диапазона будет осуществлена по данным столбца (строки), первая ячейка которого указана в качестве ключа.
SortOn – необязательный параметр, который задает критерий сортировки (по какому свойству ячеек производится сортировка).
Значения, которые может принимать SortOn:
Константа | Значение | Описание |
---|---|---|
SortOnValues | 0 | сортировка по значению (значение по умолчанию) |
SortOnCellColor | 1 | сортировка по цвету ячейки |
SortOnFontColor | 2 | сортировка по цвету шрифта |
SortOnIcon | 3 | сортировка по иконке* |
* Иконки (значки) могут быть заданы ячейкам при условном форматировании диапазона.
Order – необязательный параметр, задающий порядок сортировки (по возрастанию или по убыванию).
Значения, которые может принимать Order:
Константа | Значение | Описание |
---|---|---|
xlAscending | 1 | сортировка по возрастанию (значение по умолчанию) |
xlDescending | 2 | сортировка по убыванию |
DataOption – необязательный параметр, который задает способ сортировки текста.
Значения, которые может принимать DataOption:
Константа | Значение | Описание |
---|---|---|
xlSortNormal | 0 | числовые и текстовые данные сортируются отдельно (значение по умолчанию) |
xlSortTextAsNumbers | 1 | текстовые данные рассматриваются для сортировки как числовые |
4. .SetRange [Range] – метод SetRange объекта Sort задает диапазон (таблицу), в котором выполняется сортировка.
5. .Header = [xlGuess, xlYes, xlNo] – свойство Header объекта Sort указывает, является ли первая строка таблицы строкой заголовков (шапкой).
Значения, которые может принимать свойство Header:
Константа | Значение | Описание |
---|---|---|
xlGuess | 0 | Excel сам определяет, есть ли строка заголовков |
xlYes | 1 | строка заголовков есть, сортировка ее не затрагивает |
xlNo | 2 | строки заголовков нет (значение по умолчанию) |
6. .MatchCase = [True, False] – свойство MatchCase объекта Sort указывает, как учитывать регистр при сортировке.
Значения, которые может принимать свойство MatchCase:
Константа | Значение | Описание |
---|---|---|
False | 0 | регистр не учитывается (значение по умолчанию) |
True | 1 | сортировка с учетом регистра |
7. .Orientation = [xlTopToBottom, xlLeftToRight] – свойство Orientation объекта Sort задает ориентацию для сортировки.
Значения, которые может принимать свойство Orientation:
Константа | Значение | Описание |
---|---|---|
xlTopToBottom | 1 | сортировка по стокам (значение по умолчанию) |
xlLeftToRight | 2 | сортировка по столбцам |
8. .Apply – метод Apply объекта Sort выполняет сортировку диапазона в соответствии с примененными параметрами.
Примеры сортировки
Таблица для примеров
Сортировка по одному столбцу
Краткая запись кода VBA Excel для сортировки диапазона по первому столбцу с параметрами по умолчанию:
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Ключ 1 | Необязательный | Variant | Указывает первое поле сортировки в виде имени диапазона (string) или объекта Range ; определяет значения для сортировки. |
Заказ 1 | Необязательный | XlSortOrder | Определяет порядок сортировки для значений, указанных в key1. |
Ключ 2 | Необязательный | Variant | Второе поле сортировки; не может использоваться при сортировке сводной таблицы. |
Type | Необязательный | Variant | Указывает тип элементов, которые должны быть отсортированы в сводной таблице. Укажите xLSortLabels для сортировки по меткам, на которые нацелен диапазон experession в областях меток строк и столбцов диапазона сводной таблицы, или xLSortValues , если Key1 дополнительно нацелен на ячейку в областях значений или вложенных или общих итогов с помощью нотации R1C1. |
Заказ 2 | Необязательна | XlSortOrder | Определяет порядок сортировки для значений, указанных в key2. |
Ключ 3 | Необязательный | Variant | Третье поле сортировки; не может использоваться при сортировке сводной таблицы. |
Заказ 3 | При необходимости | XlSortOrder | Определяет порядок сортировки для значений, указанных в key3. |
Header | При необходимости | XlYesNoGuess | Указывает, содержит ли первая строка сведения о заголовке. Значение по умолчанию — xlNo; укажите xlGuess, если Excel попытаться определить заголовок. |
OrderCustom | Необязательный | Variant | Задает однона основе целочисленного смещения в списке пользовательских заказов сортировки. |
MatchCase | Необязательный | Variant | Задайте значение True для выполнения сортировки с учетом регистра, False — для сортировки без учета регистра; не может использоваться со сводными таблицами. |
Orientation | При необходимости | XlSortOrientation | Указывает, должна ли сортировка быть по строке (по умолчанию) или столбцу. Для сортировки по столбцу задайте для значения xlSortColumns значение 1. Задайте значение xlSortRows 2 для сортировки по строкам (это значение по умолчанию). |
SortMethod | При необходимости | XlSortMethod | Указывает метод сортировки. |
DataOption1 | При необходимости | XlSortDataOption | Указывает, как сортировать текст в диапазоне, указанном в key1; не применяется к сортировке сводной таблицы. |
DataOption2 | Необязательна | XlSortDataOption | Указывает, как сортировать текст в диапазоне, указанном в key2; не применяется к сортировке сводной таблицы. |
DataOption3 | Необязательна | XlSortDataOption | Указывает способ сортировки текста в диапазоне, указанном в key3; не применяется к сортировке сводной таблицы. |
Возвращаемое значение
Пример
Этот пример получает значение цвета ячейки в столбце A с помощью свойства ColorIndex , а затем использует это значение для сортировки диапазона по цвету.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Та же функция, только с возможностью выбора столбца для сортировки двумерного массива:
Сортировка двумерного массива на листе Excel, по первым 3 столбцам по возрастанию
(создаётся временная книга из 1 листа для сортировки массива, после сортировки книга закрывается)
Ну и обычная пузырьковая сортировка одномерного массива
то же самое, но внутри макроса (arr - одномерный массив)
Комментарии
Игорь, предлагаю на Ваш суд такой вариант сортировки (через временный лист). При сортировке 400к+ текстовых значений время сортировки составляет несколько секунд (для меньших объемов возможно и не требуется такой подход). На вход подается двумерный массив с двумя столбцами, сортировка по первому столбцу, заголовки - опционально.
P.S. табуляция с отступами в коде пропали во время вставки кода на данной страничке. так что извиняйте за такое форматирование
Sub SortValue(ByRef rInitArr As Variant)
Dim sTMPSh$
sTMPSh = "Sortir"
On Error Resume Next
If Sheets(sTMPSh) Is Nothing Then
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = sTMPSh
Else
With Sheets(sTMPSh)
.Select
.Cells.ClearContents
End With
End If
On Error GoTo 0
Application.DisplayAlerts = False
Application.EnableEvents = False
With ActiveWorkbook.Worksheets(sTMPSh)
.Range(.Cells(2, 1), .Cells(UBound(rInitArr), 2)) = rInitArr
.Cells(1, 1) = "Сортируемый столбец"
.Cells(1, 2) = "Второй строки"
With .Sort
.SortFields.Clear
.SortFields.Add Key:=Cells(1, 1), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange Range(Cells(1, 1), Cells(UBound(rInitArr), 2))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
rInitArr = .Range(Cells(2, 1), Cells(UBound(rInitArr), 2))
.Delete
End With
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
При сортировке "скромного" массива на 400к+ строк через предложеннух функцию (первая по счету) комп ушел в "несознанку" на несколько десятков минут (терпение закончилось раньше). Если-то же самое выполнить средствами Worksheet (т.е. стандартный фильтр и в нем сортировка) - сортировка занимает около 2,5 минут (без учета выгрузки содержимого массива на временный лист (код примерно такой range(cells(1,1), cells(ubound(sourcearr), 2)) = sourcearr (цикл по строкам массива в данном случае не требуется)) и повторного считывания в массив).
В связи с чем вопрос: при каких размерах массивов есть смысл использовать тот или иной метод сортировки (безусловно, если есть какая то статистика)? Значения текстовые, массив двумерный.
Спасибо за труды!
nCount не нужен.
Вместо
ReDim tmpArr(UBound(SourceArr, 2)) As Variant
достаточно
dim vTmp as Variant
Здравствуйте! У меня есть рабочий лист с данными (ФИ студента и количество пропусков). Необходимо создать рабочий лист "Нет пропусков" и поместить туда ФИ тех студентов, у которых нет пропусков. Также после этого необходимо создать еще один лист "Есть пропуски" с оставшимися студентами. Эту часть задания я выполнила, но надо, чтобы все эти данные, выведенные в листах "Нет пропусков" и "Есть пропуски" были в алфавитном порядке (то есть имена студентов должны располагаться в новых листах по алфавиту). Как это сделать? Вот мой код:
Сортировка по алфавиту для столбца "Фамилия" (Excel)
ВАЩЕ Я БАЗУ ДАННЫХ ПИЩУ НА VBA EXEL. Мне нуна написать сордировку по алфавиту для столбца.
сортировка по алфавиту
Доброго времени суток форумчане. Столкнулся с проблемой на первый взгляд с простой но чтото завис.
Сортировка по алфавиту
Здравствуйте! Подскажите пожалуйста, у меня есть допустим 2 столбца, где:1 - Фамилия и инициалы. 2.
Сортировка по алфавиту
Здравствуйте помогите отсортировать файл по алфавиту, начиная по второй строки, необходимо сделать.
Решение
Какую от Вас ожидает сортировку преподаватель, лично мне, неведомо, если ту, что используется в самом Excel, то, на выбор :
Сортировка по алфавиту в ComboBox
Люди, как прописать сортировку в комбобоксе по алфавиту? И так, чтоб например после цифры 22, шла.
Сортировка слов по алфавиту
есть столбец слов нужно их отсортировать по алфавиту подскажите алгоритм До этого сортировал.
Сортировка массива по алфавиту
Добрый день. Помогите пожалуйста сделать программу сортировки по алфавиту. Заранее спасибо.
Сортировка массива по алфавиту
Ребят сделал скрин с данной таблицей. так же скрин с моим кодом и результат в таблице. вообщем 2.
Читайте также: