Vba excel сортировка по столбцу
Помогите дописать макрос:
Кнопка "Сортировка" – это макрос, который фильтрует в 1-м листе ("Смета по разделам") и перекидывает на другой лист ("СМЕТА").
Номера для фильтрации и сортировки указываются в столбце A и L.
Существующий макрос сортирует по первому столбцу А.
Данный макрос нужно дописать, чтобы он сортировал по столбцу L внутри каждого этапа с сохранением высоты строк.
Помогите дописать макрос:
Кнопка "Сортировка" – это макрос, который фильтрует в 1-м листе ("Смета по разделам") и перекидывает на другой лист ("СМЕТА").
Номера для фильтрации и сортировки указываются в столбце A и L.
Существующий макрос сортирует по первому столбцу А.
Данный макрос нужно дописать, чтобы он сортировал по столбцу L внутри каждого этапа с сохранением высоты строк. den45444
Кнопка "Сортировка" – это макрос, который фильтрует в 1-м листе ("Смета по разделам") и перекидывает на другой лист ("СМЕТА").
Номера для фильтрации и сортировки указываются в столбце A и L.
Существующий макрос сортирует по первому столбцу А.
Данный макрос нужно дописать, чтобы он сортировал по столбцу L внутри каждого этапа с сохранением высоты строк. Автор - den45444
Дата добавления - 28.05.2016 в 13:53
А в столбце "К:К" что за значения? откуда они берутся?
Может по ним сразу и расставлять, как надо?
Есть 2.09 и 2.1; соответственно подэтапы 1 и 09. который раньше?
А в столбце "К:К" что за значения? откуда они берутся?
Может по ним сразу и расставлять, как надо?
Есть 2.09 и 2.1; соответственно подэтапы 1 и 09. который раньше? Michael_S
2,09 - это 9-ая позиция 2-го этапа
2,1 - это 10-я позиция 2-го этапа (2,10 не ставится) Автор - den45444
Дата добавления - 28.05.2016 в 20:24
Michael_S, здравствуйте. У меня к вам еще один вопрос по вашему макросу:
При составлении сметы, часто добавляются строки и заполняются вручную, но сортировку не указываем. Возможно ли такое, чтобы эти строки попадали в начало сметы, т.е. в 1-й этап?
Michael_S, здравствуйте. У меня к вам еще один вопрос по вашему макросу:
При составлении сметы, часто добавляются строки и заполняются вручную, но сортировку не указываем. Возможно ли такое, чтобы эти строки попадали в начало сметы, т.е. в 1-й этап? den45444
Синтаксис полного кода 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 и обратная связь.
expression A variable that represents a Range object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Key1 | Optional | Variant | Specifies the first sort field, either as a range name (String) or Range object; determines the values to be sorted. |
Order1 | Optional | XlSortOrder | Determines the sort order for the values specified in Key1. |
Key2 | Optional | Variant | Second sort field; cannot be used when sorting a PivotTable. |
Type | Optional | Variant | Specifies which type of elements are to be sorted within a PivotTable. Specify xLSortLabels to sort by the labels targeted by the experession Range in the Row/Colum Labels areas of the PivotTable's range, or xLSortValues when Key1 additionally targets a cell in the Values or Sub/Grand Totals areas using R1C1 notation. |
Order2 | Optional | XlSortOrder | Determines the sort order for the values specified in Key2. |
Key3 | Optional | Variant | Third sort field; cannot be used when sorting a PivotTable. |
Order3 | Optional | XlSortOrder | Determines the sort order for the values specified in Key3. |
Header | Optional | XlYesNoGuess | Specifies whether the first row contains header information. xlNo is the default value; specify xlGuess if you want Excel to attempt to determine the header. |
OrderCustom | Optional | Variant | Specifies a one-based integer offset into the list of custom sort orders. |
MatchCase | Optional | Variant | Set to True to perform a case-sensitive sort, False to perform a non-case-sensitive sort; cannot be used with PivotTables. |
Orientation | Optional | XlSortOrientation | Specifies if the sort should be by row (default) or column. Set xlSortColumns value to 1 to sort by column. Set xlSortRows value to 2 to sort by row (this is the default value). |
SortMethod | Optional | XlSortMethod | Specifies the sort method. |
DataOption1 | Optional | XlSortDataOption | Specifies how to sort text in the range specified in Key1; does not apply to PivotTable sorting. |
DataOption2 | Optional | XlSortDataOption | Specifies how to sort text in the range specified in Key2; does not apply to PivotTable sorting. |
DataOption3 | Optional | XlSortDataOption | Specifies how to sort text in the range specified in Key3; does not apply to PivotTable sorting. |
Return value
Example
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
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Ребят, короче я создал отчет в Excel. Мне нужно сделать сортировку по столбцу кол-ва выполненных заданий. По убыванию. Затем удалит сортировку и новую сортировку по ФИО. Отчет выполняется. Начал делать сортировку и не получается, код с сортировкой показывает ошибку (сортировку не понял как делать, нашел в интернете примеры. Ошибка: не допустимая ссылка, не поддерживает метод)
ComboBox выбр значений в многомерный массиве по определенному столбцу | MS Excel
Здравствуйте Коллеги! Следующая ситуация в таблице четыре столбца, в последнем значения ИСТИНА /.
Как отсортировать данные в таблице, содержащей различные типы данных, по определенному столбцу?
Всем, добрый день. Вывернул уже себе весь мозг. Стоит задача отсортировать часть таблицы.
Сортировка по столбцу
Подскажите, пожалуйста. Как сделать так, чтобы при нажатие кнопки сортировки сортировался столбец.
wfall, простите, а вы что вручную - на листе не можете отсортировать данные?
Вкладка Разработчик - Запись макроса (вверху в меню слева) - выделяете столбец с количеством заданий -Данные - Сортировка от Я до А (т.к. надо по убыванию) Либо даст окно, в котором можно определить заголовок столбца, если есть и выбрать по убыванию или возрастанию. Затем Разработчик - Остановить запись. Появится макрос на все ваши ручные действия, который можно запускать. Потом то же самое по ФИО (от А до Я)- получите второй макрос.
Добавлено через 9 минут
А вот если мышкой покрутить ещё дальше вниз этой страницы, то там будет раздел Похожие темы
у меня несовсем связано с макросом больше с visual basic sript. Сортировку я сделал, не получается фильтрация по столбцу Фио потом очистить фильтр и другой фильтр помтавить. помогите
wfall, ну я про это и писал, надо включить макрорекодер и потом делать вручную и получите макрос. Если сами не знаете этого, то пришлите не свой макрос, а файл с макросами
wfall, взял первый попавшийся свой файл, включил рекодер, проделал сортировку по первому столбцу от Я до А, остановил запись, получил первый макрос (Макрос1). Снова включил рекодер, сделал сортировку по второму столбцу, Остановил запись макроса, получил Макрос2. Можете запускать их по очереди и увидите результат.
wfall, простите, недосмотрел, про фильтрацию пропустил, но надо сделать по той же методике с записью макроса
Добавлено через 9 минут
wfall, а вот созданный рекодером для моего примера макрос сортировки. Ну если совсем непонятно, то шлите файл.
Burk, фильтр получился таким образом
objSummarySheet7.Range("$A$2:$AH$100").AutoFilter 13, "Закрыт", True //фильтрация по закрытым заданиям
После того как я запустил скрипт, открываю excel фильтр стоит по Закрытым заданиям но считает количества всех и которые в работе и закрытые
Скрипт по которому высчитывается кол-ва закрытых и в работе и приостановленные:
wfall, А вы в скрипте проверяете скрыта строка или нет оператором типа If Not Rows(Номер вашей строки).Hidden Then Считаем, а если нет, то нет?
Ошибка типа Type mismatch
Нашел в интернете такой пример, что я не так делаю?
Добавлено через 42 минуты
Ошибка где я проверяю строку на скрытость. Искал в инете все не то. Подскажите каким свойством для строки искат Hidden. Ошибку указывает на эту строку
wfall, а какое значение вашей n при этом? Единственный вариант ошибки, что там находится не целое число, а какая-то фигня. Поставьте перед вашим If оператор Msgbox n и увидите. Или, когда вылетит ошибка, нажмите на Debug, а затем поставьте мышку на эту самую n и увидите её значение. И ваше условие написано неправильно. Вам надо, чтобы если строка не скрыта, то считать. я же писал, что надо так: If Not Rows(n).Hidden = True Then. Т.е. если строка не скрыта
, то считаем. Но на ошибку это не повлияет, смотрите значение n. Можно писать и без True If Not Rows(n).Hidden Then, потому что Rows(n).Hidden выдает логическое True или False. И не ставьте на каждый мой ответ плюсик, обычно его ставят, когда всё Ок.
Сортировка по столбцу в ListView
На UserForm1 есть ListView1 с 5 столбцами! Наверху каждого столбца есть что-то типа кнопки с.
Сортировка по столбцу таблицы Ворд
Вся сложность в том, что имеется 6 столбцов, в 1 м номер по порядку, надо отсортировать данные 2 го.
Сортировка таблицы в Listbox по выбранному столбцу
Не получается отсортировать таблицу в Listbox по выбранному столбцу. Посмотрите, пожалуйста.
Читайте также: