Сортировка выделенного диапазона в excel vba

Сортировка данных в таблице на рабочем листе Excel средствами VBA. Sort и SortField, объекты и методы. Примеры сортировки данных в диапазоне.

Синтаксис сортировки

Синтаксис полного кода VBA Excel, применяемого для сортировки данных в таблицах и диапазонах:

With Expression.Sort

    .SortFields.Clear

    .SortFields.Add Key, SortOn, Order, DataOption

    .SetRange [Range]

    .Header = [xlGuess, xlYes, xlNo]

    .MatchCase = [True, False]

    .Orientation = [xlTopToBottom, xlLeftToRight]

    .Apply

End With

Синтаксис сокращенного кода VBA Excel, применяемого для сортировки данных с параметрами по умолчанию:

With Expression.Sort

    .SortFields.Clear

    .SortFields.Add Key

    .SetRange [Range]

    .Apply

End With

Expression – выражение, возвращающее объект Worksheet, например:

ActiveSheet

Worksheets («Лист1»)

ActiveWorkbook.Worksheets («Лист1»)

Workbooks(«Книга1.xlsm»).Worksheets («Лист1»)

Расшифровка кода

1. Expression.Sort – метод Sort объекта Worksheet возвращает объект Sort.

Объект Sort – это объект, представляющий сортировку диапазона данных.


2. .SortFields.Clear – метод SortFields объекта Sort возвращает коллекцию объектов SortFields. Метод Clear объекта SortFields удаляет все существующие объекты SortField.

Объект 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 для сортировки диапазона по первому столбцу с параметрами по умолчанию:

Sub Primer1()

    With ActiveSheet.Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range(«A2»)

        .SetRange Range(«A2:C7»)

        .Apply

    End With

End Sub

Полная запись, но тоже с параметрами по умолчанию:

Sub Primer2()

    With ActiveSheet.Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range(«A2»), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

        .SetRange Range(«A2:C7»)

        .Header = xlNo

        .MatchCase = False

        .Orientation = xlTopToBottom

        .Apply

    End With

End Sub

Результат сортировки:

Сортировка по двум столбцам

Код VBA Excel для сортировки исходной таблицы по первому и второму столбцам с параметрами по умолчанию:

Sub Primer3()

    With ActiveSheet.Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range(«A2»)

        .SortFields.Add Key:=Range(«B2»)

        .SetRange Range(«A2:C7»)

        .Apply

    End With

End Sub

Результат сортировки:

Применение сортировки ко второму столбцу (добавление еще одного объекта SortField) не нарушает сортировку первого – в первом столбце меняются местами только ячейки с одинаковыми значениями.

Поиск не помог (видимо потому что я нуб в макросах)  

  Есть код:  

  Sub D()  
Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 = «= R[-1]C»
Selection.Copy  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
   Application.CutCopyMode = False  
End Sub  

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

  Записал макрос сортировки:  

  Sub сортировка()  
   ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Clear  
   ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Add Key:=Range(«D57:D70»), _  
       SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal  
   With ActiveWorkbook.Worksheets(«пслн»).Sort  
       .SetRange Range(«A57:D70»)  
       .Header = xlGuess  
       .MatchCase = False  
       .Orientation = xlTopToBottom  
       .SortMethod = xlPinYin  
       .Apply  
   End With  
End Sub  

  Но как в нем поставить выделенный диапазон, а не фиксированный не понимаю.

сортировка выделенного диапазона макросом

Flatcher

Дата: Воскресенье, 21.02.2016, 20:06 |
Сообщение № 1

Группа: Проверенные

Ранг: Участник

Сообщений: 92


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

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

К сообщению приложен файл:

report.xls
(49.5 Kb)

 

Ответить

Апострофф

Дата: Воскресенье, 21.02.2016, 20:55 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 416


Репутация:

117

±

Замечаний:
0% ±


Excel 1997

С минимальным отклонением от стиля и если я угадал поля сортировки —

[vba]

Код

Sub СОРТИРОВКА()
Dim rn As Range
Dim vAdr1 As String
Dim vAdr2 As String
‘ НА ВСЯКИЙ СЛУЧАЙ АКТИВИРУЕМ ПЕРВУЮ ЯЧЕЙКУ
Cells(1, 1).Select
‘ НАХОДИМ ПЕРВУЮ ЯЧЕЙКУ СО СЛОВОМ ОПЕРАЦИЯ
Cells.Find(What:=»Операция», After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
‘ ЗАПИСЫВАЕМ АДРЕС НАЙДЕННОЙ ЯЧЕЙКИ В ПЕРЕМЕННУЮ
vAdr1 = Selection.Address
‘ ВЫДЕЛЯЕМ СТОЛБЕЦ С ЗНАЧЕНИЯМИ ОТ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ
Range(Selection, Selection.End(xlDown)).Select
‘ И ВЛЕВО
Range(Selection, Selection.End(xlToLeft)).Select
‘ ПРИМЕНЯЕМ СОРТИРОВКУ
Set rn = Selection
rn.Columns(1).NumberFormat = «dd.mm.yyyy»
rn.Columns(1).Value = rn.Columns(1).Value
rn.Columns(2).NumberFormat = «hh:mm:ss»
rn.Columns(2).Value = rn.Columns(2).Value
    rn.Sort Key1:=[a1], Order1:=xlAscending, Key2:= _
        [b1], Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, _
        DataOption2:=xlSortTextAsNumbers

‘??????

‘ СМЕЩАЕМСЯ НА ОДНУ СТРОКУ ВНИЗ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА
ActiveCell.Offset(1, 0).Select
‘ ЦИКЛ
Do
‘ ПРОДОЛЖАЕМ ПОИСК ДАЛЕЕ
Cells.FindNext(After:=ActiveCell).Select
‘ ЗАПИСЫВАЕМ АДРЕС НАЙДЕННОЙ ЯЧЕЙКИ В ПЕРЕМЕННУЮ
vAdr2 = Selection.Address
‘ СРАВНИВАЕМ ПЕРЕМЕННЫЕ (ЕСЛИ СОВПАДАЮТ С АДРЕСОМ ПЕРВОЙ НАЙДЕННОЙ ЯЧЕЙКИ ОСТАНАВЛИВАЕМ ЦИКЛ)
If Not vAdr1 <> vAdr2 Then Exit Do
‘ ВЫДЕЛЯЕМ СТОЛБЕЦ С ЗНАЧЕНИЯМИ ОТ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ
Range(Selection, Selection.End(xlDown)).Select
‘ И ВЛЕВО
Range(Selection, Selection.End(xlToLeft)).Select
‘ ПРИМЕНЯЕМ СОРТИРОВКУ
Set rn = Selection
rn.Columns(1).NumberFormat = «dd.mm.yyyy»
rn.Columns(1).Value = rn.Columns(1).Value
rn.Columns(2).NumberFormat = «hh:mm:ss»
rn.Columns(2).Value = rn.Columns(2).Value
    rn.Sort Key1:=[a1], Order1:=xlAscending, Key2:= _
        [b1], Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, _
        DataOption2:=xlSortTextAsNumbers

‘??????

‘ СМЕЩАЕМСЯ НА ОДНУ СТРОКУ ВНИЗ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА
ActiveCell.Offset(1, 0).Select
Loop
End Sub

[/vba]

 

Ответить

nilem

Дата: Воскресенье, 21.02.2016, 20:55 |
Сообщение № 3

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

попробуйте так:
[vba]

Код

Sub СОРТИРОВКА()
Dim r As Range, adr$
Set r = Sheets(«Report»).UsedRange.Find(«Операция», LookIn:=xlValues, lookat:=xlWhole)
If Not r Is Nothing Then
    adr = r.Address
    Do
        With r.CurrentRegion
            With .Resize(.Rows.Count — 1)
                .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, _
                      Key2:=.Cells(1, 2), Order2:=xlAscending, Header:=xlYes
            End With
        End With
        Set r = Sheets(«Report»).UsedRange.FindNext(r)
    Loop While r.Address <> adr
End If
End Sub

[/vba]


Яндекс.Деньги 4100159601573

 

Ответить

Flatcher

Дата: Воскресенье, 21.02.2016, 21:11 |
Сообщение № 4

Группа: Проверенные

Ранг: Участник

Сообщений: 92


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Апострофф, спасибо работает))

 

Ответить

Flatcher

Дата: Воскресенье, 21.02.2016, 21:12 |
Сообщение № 5

Группа: Проверенные

Ранг: Участник

Сообщений: 92


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

nilem, спасибо! тоже все заработало! насколько можно оказывается сокращать код)))

 

Ответить

VBA сортировка диапазона

​Смотрите также​​xlGuess. Let Microsoft​
​ VBA нужного диапазона​ Key2:= _​Set rn =​Pelena​ кнопку. Я думаю,​ не хотите писать​ или «В»​ зависит, как вы​ меню Paste и​Caption и ID​И при сортировке​: Сделал так:​Hamletiv​ y + 1:​ Mod 2 Next​
​atomreal​ Excel determine whether​ приходится отделять его​
​[b1], Order2:=xlAscending, Header:=xlYes,​ Selection​:​ на этот раз​ свой сортировочный метод​Проблема в том,​ хотите преобразовать стандартную​ меню Paste Special​ для этих меню​ столбца А с​Sub D()​: Поиск не помог​ ReDim Preserve arr2(1​ With ActiveSheet.Sort .SortFields.Clear​: Доброго времени суток.​ there’s a header,​ от заголовков пустой​
​ OrderCustom:=1, MatchCase:= _​rn.Columns(1).NumberFormat = «dd.mm.yyyy»​

​satrman​​ вам идея должна​ и подменять им​ что в столбце​ сортировку, а раз​ на свой метод:​ такие:​ параметром Order1:=xlDescending все​Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 =​ (видимо потому что​ To j, 1​ .SortFields.Add Key:=Range(«F2:F» &​Помогите пожалуйста разобраться,​ and to determine​ строкой. Возникает проблема​False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers,​rn.Columns(1).Value = rn.Columns(1).Value​, оформите код тегами​ быть понятна.​ штатный, то вам,​ «А» есть истинно​ так, то и​ FantomPaste. Т.е., когда​Sort &Ascending 210​

​ эти ячейки со​​ «= R[-1]C»​
​ я нуб в​ To y) For​ lr), SortOn:=xlSortOnValues, _​ как отсортировать диапазон​ where it is,​ со сводными. Как​ _​rn.Columns(2).NumberFormat = «hh:mm:ss»​ (кнопка #)​gomboev​ видимо, остается копировать​ пустые ячейки (без​ собственно ее алгоритм.​ вы делаете Paste,​Sort Des&cending 211​ значением «» перескакивают​Selection.Copy​ макросах)​ z = 0​ Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add​ с данными по​ if there is​ по уму это​DataOption2:=xlSortTextAsNumbers​rn.Columns(2).Value = rn.Columns(2).Value​satrman​: VladConn​ формулы в значения​ формул и значений),​VladConn​ то будет исполняться​Альтернативный (и более​ вверх, а числа​Selection.PasteSpecial xlPasteValues​Есть код:​ To j -​ Key:=Range(«A2:A» & lr),​ первому столбцу в​ one.​ делается?​’??????​rn.Sort Key1:=[a1], Order1:=xlAscending,​: Все, разобрался сам​огромное спасибо за​ и сортировать уже​ которые при сортировке​gomboev​ мой метод (процедура,​ простой) вариант такой:​ оказываются внизу (по​Application.CutCopyMode = False​

​Sub D()​​ 1 arr2(z +​

​ SortOn:=xlSortOnValues, _ Order:=xlAscending,​​ VBA так, что​xlNo (default). (The​admin​’ СМЕЩАЕМСЯ НА​ Key2:= _​ спасибо!​ идею! сделал!​ их, а потом​ всегда остаются внизу​: VladConn,​ функция, макрос; назовите​ не пользоваться формулами​ убыванию)​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Clear​Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 =​ 1, y) =​ DataOption:=xlSortNormal .SetRange Range(«A1:F»​ бы сначала были​ entire range should​: А какой код​ ОДНУ СТРОКУ ВНИЗ​[b1], Order2:=xlAscending, Header:=xlYes,​Flatcher​

​выложу файлик с​​ программно заменять на​

planetaexcel.ru

VBA сортировка выделенного диапазона

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

​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Add Key:=Range(«D:D»), _​

​ «= R[-1]C»​
​ cell(cl + z)​ & lr): .Header​
​ чётные номера стеллажей,​
​ be sorted).​ для сортировки вы​
​ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА​
​ OrderCustom:=1, MatchCase:= _​
​: Подскажите пожалуйста как​

​ примерчиком, может кому​ формулы.​ столбце «В», ячейкам​ тупость, но я​ такой подмены обязательно​ Вместо них можно​ сортировать столбец В,​SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal​Selection.Copy​ Next z End​ = xlYes: .MatchCase​

​ а затем шли​

​xlYes. (The entire​
​ используете?​
​ActiveCell.Offset(1, 0).Select​
​False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers,​
​ организовать сортировку выделенного​
​ нужно будет​
​В столбец А​
​ присваивается значение «»​
​ не нашел ничего​
​ должна сопровождаться своим​
​ повесить кнопку или​
​ то такого не​
​With ActiveWorkbook.Worksheets(«пслн»).Sort​

​Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,​ Select Next cl​ = False .Orientation​ нечетные. Я не​

​ range should not​​Guest​Loop​

​ _​​ диапазона макросом? В​

​satrman​
​ в первые 5​ при определенном условии​
​ подходящего в теме​
​ зеркальным собратом, который​
​ меню, которые бы​
​ происходит, и пустые​
​.SetRange Selection​
​ SkipBlanks _​
​ arr1 = Application.Transpose(arr1):​
​ = xlTopToBottom: .SortMethod​
​ стал всю таблицу​
​ be sorted).​
​: К примеру Range(«A3»).CurrentRegion.Sort​
​End Sub​
​DataOption2:=xlSortTextAsNumbers​
​ коде постарался максимально​
​: Вопрос от новичка.​

​ строк вбейте 1,​
​ (по средствам формул)​

planetaexcel.ru

Сортировка диапазона данных

​ «Copy-Past» 8(​​ восстанавливает исходную функциональность​
​ программно вычисляли колонку​ ячейки остаются внизу,​.Header = xlGuess​:=False, Transpose:=False​ arr2 = Application.Transpose(arr2)​
​ = xlPinYin: .Apply​ грузить, стеллажей около​Guest​ Key1:=Range(«A3»), Key2:=Range(«C3»), Key3:=Range(«E3»)​nilem​’??????​ расписать все​

​ Записал макрос по​​ 5, 4, 3,​ и при сортировке​Отказаться от использования​ подмененного меню. Иначе​
​ «А», очищая ее​ а ячейки с​.MatchCase = False​Application.CutCopyMode = False​ Cells(UBound(arr1, 1) +​ End With Columns(6).ClearContents​ сотни. Система выгружает​: Из-за незнания этого​
​A2 пустая​: попробуйте так:​’ СМЕЩАЕМСЯ НА​Апострофф​ сортировке диапазона.​ 2. В столбец​ по убыванию псевдо​ формул в ячейках​
​ — в вашем​ строки, когда соответствующие​ числами сортируются наверху​.Orientation = xlTopToBottom​End Sub​ 2, 1).Resize(UBound(arr2, 1),​ End Sub​ продукты на запасе​
​ метода пришлось по-домашнему​vikttur​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub СОРТИРОВКА()​ ОДНУ СТРОКУ ВНИЗ​: С минимальным отклонением​В макросе прописано:​ В в эти​ пустые ячейки перескакивают​ я не могу,​
​ Excel все книги​ ячейки в колонке​

​ по убыванию​​.SortMethod = xlPinYin​
​После выполнения диапазон​ UBound(arr2, 2)) =​Nordheim​ в стеллажах по​Range(«A1″).Activate​: Павлов пришел :)​Dim r As​ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА​ от стиля и​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub RegAlfabet()​
​ строки вставьте формулу​ вверх списка. Вот​ так как программка​ будут работать нестандартно.​ «B» истинно пусты.​Получается, что значение​.Apply​ остается выделенным. В​
​ arr2 Cells(2, 1).Resize(UBound(arr1,​
​: Еще вариант!​ факту.​Set CurrentReg =​
​Николай, здравствуйте! Почему​
​ Range, adr$​
​ActiveCell.Offset(1, 0).Select​ если я угадал​’​ =IF(AХ>1,AХ,»»), где Х​ с этим-то и​ уже сильно разрослась,​ Вызов процедуры подмены​ После этого стандартная​ «» (пусто) задаваемое​End With​ код нужно добавить​ 1), UBound(arr1, 2))​Sub Test() Dim​я начал было,​ ActiveCell.CurrentRegion​ так редко с​
​Set r =​

​’ ЦИКЛ​​ поля сортировки -​
​’ RegAlfabet Макрос​ — это число​ надо справиться.​ и ставить всё​ осуществляется при открытии​ сортировка будет по​ с помощью формулы​End Sub​ сортировку выделенного диапазон​ = arr1 End​ i&, j&, cell​ а потом зашел​

​R = CurrentReg.Rows.Count​​ нами?​
​ Sheets(«Report»).UsedRange.Find(«Операция», LookIn:=xlValues, lookat:=xlWhole)​Do​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub СОРТИРОВКА()​’​ от 1 до​gomboev​ на уши и​ книги, откат подмены​ результатам выглядеть идентичной​ это совсем не​Работает :)​ по столбцу D​ Sub​ As Range Dim​ в тупик:​C = CurrentReg.Columns.Count​Пользователь111​If Not r​’ ПРОДОЛЖАЕМ ПОИСК​Dim rn As​With ActiveWorkbook.Worksheets(«REG and​ 5.​: В файле примерчик​ переделывать желания нет,​ — перед ее​ для обоих столбцов.​ пусто, хоть и​Вопрос закрыт.​ (4-й столбец по​Garni​ cl&, arr1(), arr2(),​Sub sortstel() Dim​
​Set CurrentReg_1 =​: Наверное,сортировка выделения диапазона​ Is Nothing Then​ ДАЛЕЕ​ Range​ AP»).Sort​Поставьте две кнопки:​ моей проблеммы.​ вообще.​ закрытием.​VladConn​ выглядет также как​gomboev​ счету) по убыванию​: И еще вариант​ x%, y%, z%​
​ stel As Range​
​ Range(ActiveCell.Offset(1, 0), Cells(R,​ без заголовков единственный​adr = r.Address​Cells.FindNext(After:=ActiveCell).Select​Dim vAdr1 As​.SetRange Range(«C5:O100»)​Private Sub CommandButton1_Click()​Помогите, пожалуйста!​Дайте, пжалуйста, мне​Теперь касательно самого​gomboev​ совсем пустая ячейка​: Умные люди, подскажите!​ (там числа). Верхняя​
​SAS888​

​ i = Cells(Rows.Count,​​ Set stel =​
​ C))​ вариант​Do​’ ЗАПИСЫВАЕМ АДРЕС​ String​
​.Header = xlYes​ Range(«B1:B5»).Copy Range(«B1:B5»).PasteSpecial Paste:=xlPasteValues,​Димит​ ваш mail, я​ сортировочного метода (а​: Supreme Being,​ (например, очищенная кнопкой​Application.Range(«A2:U101»).SortSpecial _ Key1:=ActiveSheet.Range(«A2»),​ строка диапазона не​
​: Можно и так:​ 1).End(xlUp).Row j =​ Sheet(1).Range(«A:A») For Each​CurrentReg_1.Sort Key1:=Range(«A2») ‘​Guest​
​With r.CurrentRegion​ НАЙДЕННОЙ ЯЧЕЙКИ В​Dim vAdr2 As​.MatchCase = False​ Operation:=xlNone, SkipBlanks _​
​: Можно заменить «»​

​ отошлю небольшой примерчик​​ то и методов).​чесно говоря, я​ Delete).​ Order1:=xlAscendingВот эта строка​ заголовки и тоже​
​ Private Sub CommandButton1_Click()​ Cells(1, Columns.Count).End(xlToLeft).Column Set​ cell In stel.Cells​ и т.д​: Заело..Не могу придумать​

​With .Resize(.Rows.Count -​​ ПЕРЕМЕННУЮ​ String​.Orientation = xlTopToBottom​ :=False, Transpose:=False Dim​
​ на «я». Если​ иллюстрирующий суть моей​ Как правило, кастомизированная​ не программист, я​Как с этим​ сортирует у меня​ подлежат сортировке.​ Dim i As​ cell = Range(Cells(1,​ If cell.Value Like​Смешно, конечно!​ код выделения Current​ 1)​vAdr2 = Selection.Address​’ НА ВСЯКИЙ​.SortMethod = xlPinYin​ i As Integer​ не нравится в​

​ проблемы.​​ сортировка исполняется в​ просто в качестве​
​ справиться?​

​ столбец, но не​​Записал макрос сортировки:​ Long, a(), q:​ 1), Cells(i, j))​ «стеллаж **» Then​KuklP​ региона без верней​.Sort Key1:=.Cells(1, 1),​’ СРАВНИВАЕМ ПЕРЕМЕННЫЕ​

​ СЛУЧАЙ АКТИВИРУЕМ ПЕРВУЮ​​.Apply​ For i =​ столбце буквы «я»​И если вас​

​ своих классах, экспонирующих​​ хобби пишу программки​
​VladConn​ так как надо.​Sub сортировка()​ Application.ScreenUpdating = False​ cell.Sort Key1:=cell(1), order1:=xlAscending,​
​ s = cell.Value​: Что смешного? Вы​

​ строки​​ Order1:=xlAscending, _​ (ЕСЛИ СОВПАДАЮТ С​ ЯЧЕЙКУ​End With​ 1 To 5​ , их можно​ не затруднит, то​ такие сортировочные процедуры,​ для себя и​: gomboev,​Она сортирует по​
​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Clear​ a = Range(«A2:A»​ Header:=xlYes For cl​ ‘стеллаж a =​ и сами могли​EducatedFool​Key2:=.Cells(1, 2), Order2:=xlAscending,​ АДРЕСОМ ПЕРВОЙ НАЙДЕННОЙ​Cells(1, 1).Select​End Sub​ If Range(«B» &​
​ скрыть условным форматированием​
​ покажите на нём​ или методы. Инстанциирование​ окружающих, чтобы облегчить​При сортировке только​ содержимому ячеек (т.е.​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Add Key:=Range(«D57:D70»), _​ & Cells(Rows.Count, 1).End(xlUp).Row).Value​ = j +​ cell.Offset(0, 1) ‘артикул​ бы нажатьF1 на​: Какая разница, диапазон​ Header:=xlYes​ ЯЧЕЙКИ ОСТАНАВЛИВАЕМ ЦИКЛ)​’ НАХОДИМ ПЕРВУЮ​Но мне нужно,​ CStr(i)).Value = «»​ или сортировкой по​ же как мне​ такого класса в​ свой труд и​ истинно пустые ячейки​ по формулам, которые​SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal​ For i =​ 1 To cell.Count​ n = cell.Offset(0,​ слове Sort, как​ для сортировки включает​End With​If Not vAdr1​

​ ЯЧЕЙКУ СО СЛОВОМ​​ чтобы правый нижний​
​ Then Range(«B» &​ скрытому столбцу. См.​
​ с ней справиться.​ виде объекта и​ жизнь. Поэтому, так​

CyberForum.ru

Сортировка в плавающем диапазоне в VBA (Формулы/Formulas)

​ всегда идут последними.​​ там есть), а​With ActiveWorkbook.Worksheets(«пслн»).Sort​ 1 To UBound(a,​
​ Step j Select​
​ 2) ' название​
​ за Вас это​
​ в себя строку​
​End With​
​ <> vAdr2 Then​ ОПЕРАЦИЯ​
​ край диапазона был​
​ CStr(i)).ClearContents Next i​
​gomboev​
​Заранее благодарен!​
​ позволяет использовать его​
​ просто разобраться я​
​ Для того, чтобы​
​ надо чтобы сортировала​

​.SetRange Range(«A57:D70″)​ 1) q =​ Case Right(cell(cl).Value, 1)​ k = cell.Offset(0,​ любезно сделал EducatedFool.​ заголовка, или нет?​Set r =​ Exit Do​Cells.Find(What:=»Операция», After:=ActiveCell, LookIn:=xlFormulas,​ меняющимся в зависимости​ End Sub Private​: не катит, потому​Димит​ сортировочные методы. Т.е.​
​ не могу. Если​ кастомизировать сортировку, нужно​ по значениям, которые​.Header = xlGuess​

​ Split(a(i, 1)) If​​ Case 1, 3,​​ 3) ‘ количество​​ Да и приведенный​В параметрах вызова​

​ Sheets(«Report»).UsedRange.FindNext(r)​​’ ВЫДЕЛЯЕМ СТОЛБЕЦ​ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,​

excelworld.ru

сортировка выделенного диапазона макросом (Макросы/Sub)

​ от значения в​​ Sub CommandButton2_Click() Dim​ что при обратной​: Если заменить в​ имя подменивающего макроса,​ не сложно, можно​

​ писать свой класс​​ эти формулы выдают​.MatchCase = False​ Val(q(UBound(q))) Mod 2​ 5, 7, 9​
​ ei = cell.Offset(0,​
​ Вами код, это​ метода SORT можно​
​Loop While r.Address​ С ЗНАЧЕНИЯМИ ОТ​
​ _​ другой ячейке. Т.е.​
​ i As Integer​ сортировке "я" находится​ столбце с формулами​
​ или в данном​
​ немного подробнее о​ и вызывать его​gomboev​
​.Orientation = xlTopToBottom​ = 0 Then​ x = x​
​ 4) ' единица​
​ танцы с бубнами.​ указать, есть ли​ <> adr​
​ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ​
​MatchCase:=False, SearchFormat:=False).Select​ например если в​ For i =​
​ в начале списка​
​ относительные ссылки на​
​ случае метода может​
​VladConn​
​ сортировочный метод путем​: вернее не так,​
​.SortMethod = xlPinYin​
​ a(i, 1) =​
​ + 1: ReDim​
​ измерения​
​ Лучше так:​ у сортируемого диапазона​
​End If​Range(Selection, Selection.End(xlDown)).Select​
​' ЗАПИСЫВАЕМ АДРЕС​ ячейке S1 стоит​
​ 1 To 5​
​gomboev​
​ абсолютные, то это​ выглядеть так:​: gomboev,​
​ подмены имени макроса​
​ всё напутал, ссори,​
​.Apply​
​ "_" & a(i,​ Preserve arr1(1 To​
​Помогите пожалуйста, кто​
​Set tbl =​ заголовок:​End Sub​
​' И ВЛЕВО​
​ НАЙДЕННОЙ ЯЧЕЙКИ В​ число 15, то​ Range("B" & CStr(i)).Formula​: отзовитесь, уважаемые программисты!​
​ решит часть проблем.​objMenuItem.OnAction = "МойСортировочныйОбъект.МойСортировочныйМетод"​В этом же​
​ для меню "Data/Sort...".​ сами-то формулы остаются​End With​
​ 1) Next [A2].Resize(UBound(a,​
​ j, 1 To​
​ знает.​
​ [A1].CurrentRegion​
​параметр: Header​Flatcher​
​Range(Selection, Selection.End(xlToLeft)).Select​
​ ПЕРЕМЕННУЮ​
​ диапазон должен быть​
​ = "=IF(A" &​
​у меня, без​Конечно самое удачное,​
​Этот класс, очевидно,​ VBA форуме вы​
​В своем чуть​ на месте​
​End Sub​
​ 1)).Value = a​
​ x) For z​Ігор Гончаренко​tbl.Offset(1, 0).Resize(tbl.Rows.Count -​
​Specifies whether or​
​: Апострофф, спасибо работает))​
​' ПРИМЕНЯЕМ СОРТИРОВКУ​

​vAdr1 = Selection.Address​​ не «C5:O100», а​
​ CStr(i) & 1,A"​
​ вашей помощи, ну​ сортировать формулы с​
​ может, если я​ найдете тему "Copy-Past",​
​ ли не последнем​Формулы в столбце​
​Но как в​
​ [A:E].Sort [A1], Header:=xlYes​
​ = 0 To​
​: Sub SortStel() Dim​ 1, tbl.Columns.Count).Sort... и​
​ not the first​Flatcher​
​Set rn =​' ВЫДЕЛЯЕМ СТОЛБЕЦ​
​ "C5:O15". Т.е. должен​
​ & CStr(i) &​
​ никак не получается​ ссылкой на ячейку​
​ не ошибаюсь, наследовать​ она на той​
​ посте в этом​
​ А берут значения​

​ нем поставить выделенный​​ [A:A].Replace «_», «»​

​ j — 1​​ r&, lr& lr​ т.д.​ row contains headers.​: nilem, спасибо! тоже​

excelworld.ru

Сортировка в VBA. Вопрос

​ Selection​​ С ЗНАЧЕНИЯМИ ОТ​ поменять номер строки​ «,»»»»)» Next i​ решить эту проблему​ в этой же​ интерфейс IComparable из​ же странице, что​ форуме я как​

​ из столбца В​​ диапазон, а не​ End SubПример во​ arr1(z + 1,​

​ = Cells(Rows.Count, 1).End(xlUp).Row​​Guest​ Cannot be used​

​ все заработало! насколько​

​rn.Columns(1).NumberFormat = «dd.mm.yyyy»​​ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ​
​ (измениться диапазон)​ End SubНажмите первую​ 8(​

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

​ (в нем просто​​ фиксированный не понимаю.​ вложении. Откройте файл​ x) = cell(cl​ For r =​

​: Век живи,век учись-дураком​​ when sorting PivotTable​ можно оказывается сокращать​rn.Columns(1).Value = rn.Columns(1).Value​Range(Selection, Selection.End(xlDown)).Select​

​Возможно как то​ кнопку, потом как​должно же быть​gomboev​ класса, например, Collection​

​ Там я привожу​
​ это сделать (не​ числа или пусто)​Guest​ и нажмите кнопку​ + z) Next​ 2 To lr​

​ помрешь​ reports​
​ код)))​rn.Columns(2).NumberFormat = «hh:mm:ss»​’ И ВЛЕВО​ использовать команду Indirect,​ обычно сортируйте столбцы​ какое-то решение!​: сортируется диапазон, например​
​ или Dictionary (из​ простой и подробный​ индивидуальную сортировку, а​
​ и выдают либо​: Попробуйте фиксированный диапазон​ «Выполнить».​

​ z Case 0,​​ Cells(r, 6) =​Не всем же​
​значение — одно​
​Пользователь111​rn.Columns(2).Value = rn.Columns(2).Value​
​Range(Selection, Selection.End(xlToLeft)).Select​
​ но не пойму​
​ А и В,​VladConn​ «А2:B30» (по строкам),​
​ Microsoft Scripting Runtime).​ пример подмены стандартного​

​ подмену):​

​ какое-то число, либо​​ заменить на Selection​atomreal​ 2, 4, 6,​ Val(Right(Cells(r, 1), Len(Cells(r,​ KukIp быть​ из трёх:​: При сортировке в​rn.Sort Key1:=[a1], Order1:=xlAscending,​’ ПРИМЕНЯЕМ СОРТИРОВКУ​ как указать…​
​ потом нажмите вторую​: Ну раз вы​
​ относительно столбца «А»​ От вас полностью​ макроса (метода) для​

​http://www.relib.com/forums/Topic903735-11-1.aspx http://www.relib.com/forums/Topic903735-11-1.aspx​​ «» (пусто)​Hamletiv​
​: Спасибо огромное всем!​ 8 y =​

planetaexcel.ru

​ 1)) — 8))​

Excel VBA Sort Range

Sorting a range in VBA is done by the range.sort method. It is a property of the range method with which a user can sort a range in order. The arguments for this function are: Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3. All the arguments for this function are optional.

As part of data organizing or data structuring, it is important to sort the data and make it organized. A similar thing is also available with VBA. A common question about new learners of VBA is how we can use this sort of option as part of VBA automation. This article guides you through the VBA Sort range in detail.

With Excel, we are all familiar with the sort option available under the DATA tab.

Table of contents
  • Excel VBA Sort Range
    • Sort Option in VBA
    • Example of Sort Range in VBA
    • Things to Remember about Excel VBA Sort Range
    • Recommended Articles

VBA Sort Range Example 1

Sort Option in VBA

To use the sort option, first, we need to decide what our data range is and mention the same data range by using the RANGE object in VBARange is a property in VBA that helps specify a particular cell, a range of cells, a row, a column, or a three-dimensional range. In the context of the Excel worksheet, the VBA range object includes a single cell or multiple cells spread across various rows and columns.read more. Then, only we can access the “Sort” option in VBA. For example, assuming my data range is from A1 to D10, we can provide the data range as follows.

Code:

Sub Sort_Range_Example()

  Range ("A1:D10")

End Sub

VBA Sort Range Example 1.1

Now, put a dot and select the “SORT” method.

Code:

Sub Sort_Range_Example()

  Range("A1:D10").Sort

End Sub

 Example 1.2

Below is the syntax of the SORT method of range. Though syntax has different arguments, we do not need all of them for our VBA codingVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more. So, we need only a few elements.

VBA Sort Range Example 1.3

[Key1]: In the data range we are sorting, we need to specify which column we need to sort. For example, in the data range of A1: D10, if we want to sort the data based on column B, then [Key1] will be Range(“B1”).

[Order1]: The mentioned column in the [Key1] argument should sort in what order? We can choose two options here: “xlAscending” or “xlDescending.”

Header: The mentioned data range has headers or not? If yes, we can supply “xlYes,” or else we can supply “xlNo.”

Example of Sort Range in VBA

Let us take the example of the Excel VBA sort range to understand this better.

You can download this VBA Sort Range Excel Template here – VBA Sort Range Excel Template

Look at the below data structure.

 Example 1.4

We have data from A1 to E17. First, we will sort the data based on “Country-wise.” Then, follow the below steps to write the code to sort the data.

Step 1: Start the excel macroA macro in excel is a series of instructions in the form of code that helps automate manual tasks, thereby saving time. Excel executes those instructions in a step-by-step manner on the given data. For example, it can be used to automate repetitive tasks such as summation, cell formatting, information copying, etc. thereby rapidly replacing repetitious operations with a few clicks.
read more
procedure.

Code:

Sub Sort_Range_Example()

End Sub

VBA Sort Range Example 1.5

Step 2: First, mention the data range using the RANGE object.

Code:

Sub Sort_Range_Example()

  Range ("A1:E17")

End Sub

 Example 1.6

Step 3: Now, choose the “Sort” method of the Range object.

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort

End Sub

VBA Sort Range Example 1.7

Step 4: Since we are sorting the data based on “Country-wise,” our Key 1 argument column will be Range (“B1”).

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort Key1:=Range("B1"),

End Sub

 Example 1.8

Step 5: Once we mention the required column, we need to mention in what order we need to sort the data, and “Order1” will be the “xlAscending” order.

Code:

Sub Sort_Range_Example()

   Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending,

End Sub

VBA Sort Range Example 1.9

Step 6: Our data has headers so that that header will be “xlYes.”

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes

End Sub

Example 1.10

We have mentioned all the elements which are required to sort the data. Then, execute the code by pressing the F5 function and key and see the result.

Output:

VBA Sort Range Example 1.11

The data has been sorted based on country names from A to Z.

Now, assume we need to sort the data based on country-wise. Also, we need to sort the “Gross Sales” from highest to lowest. In such cases, we also need to use Key2 and Order2 arguments.

After mentioning Key1 and Order1, let us choose Key2.

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending,Key2:=

End Sub

Example 1.12.0

Since we are sorting the data based on the “Gross Sales” column, our Key2 column name will be Range(“D1”).

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending,Key2:=Range("D1"),

End Sub

VBA Sort Range Example 1.13

Once the Key2 is specified, we need to decide on the sorting pattern of whether it is ascending order or descending order in the Order2 argument. Since we are sorting the sales value from largest to smallest, we can choose the “xlDescending” order.

Code:

Sub Sort_Range_Example()

  Range("A1:E17").Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("D1"),
  Order2:=xlDescending, Header:=xlYes

End Sub

After that, mention the header argument as “xlYes.” Now, run the code and see what happens.

Output:

 Example 1.14

Previously, it was sort based only on “Country-wise.” But this time, it sorted based on “Country-wise” first and then on “Gross Sales” from highest to lowest.

Like this, we can use the “Sort” method in VBA to organize the data.

Things to Remember about Excel VBA Sort Range

  • The sort is a method available in VBA. To access this method, we need to specify the range of cells we will sort.
  • If the data range includes headers, we need to choose the header option as “xlYes.” If not, we can choose “xlNo.”

Recommended Articles

This article is a guide to VBA Sort Range. Here, we discuss how to sort range using the specific column in VBA, Excel example, and downloadable Excel templates. You may also look at these useful functions in Excel: –

  • Pivot Table Sort
  • VBA Variable Range
  • Named Range in VBA
  • UsedRange in VBA

To sort a range of cells using VBA, you need to use the “SORT” method that allows you to set a single key (column) or multiple keys (for multiple columns) to sort. You can also define the order (ascending or descending) in which you want to sort, and you can specify if you have a header or not.

Sort a Range with VBA

  1. Use the range object to specify the range that you wish to sort.
  2. Type a dot and enter the sort method.
  3. Specify the key that you want to use to sort.
  4. Define the sorting order.
  5. Mention if you have a header or not.
Range("A1:A11").Sort Key1:=Range("A1"), _
                     Order1:=xlAscending, _
                     Header:=xlYes

In the above code, you have used the range A1:A11, and in the sort method, you have used the ascending order, mentioned that you have a header in the range.

Understanding the VBA’s Sort Method

Before you write a macro to sort a range it’s better to make deep dive into the sort method and understand its arguments.

Sort (Key1, Order1, Key2, Type, Order2, Key3, Order3, _
Header, OrderCustom, MatchCase, Orientation, SortMethod, _
DataOption1, DataOption2, DataOption3)

The following are the most important arguments that you will be using in the real life.

  • Key: Here you need to define a cell whose column you want to use as a base to sort.
  • Order: Order in which you want to sort the column (ascending/descending).
  • Header: A constant to specify if you have a header or not or you want VBA to guess.

In the following code, I have used the “xlDescending” to sort amount column using descending order.

Range("A1:A13").Sort Key1:=Range("A1"), _
                     Order1:=xlDescending, _
                     Orientation:=xlSortColumns

Using Multiple Columns (Keys) to Sort

You can also use more than one column to sort a range. Let’s take an example of the below table where you have multiple entries with employee names and cities, and you need to sort using the name and city.

Here’s the code that you need to use:

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

As you can see in the code, you have key1 and key2. In the key1, you have the column with the employee name, and in the key2, you have the city column. For both columns, the sorting order is ascending, and headers are there.

Note: You can use it as any column you want to use to take as a sort base using the keys and order.

Changing Sort Orientation

When you normally sort data in Excel, by default, you can sort using columns. But from the sort options, you can change the sort orientation to the left to right instead of top to bottom.

In the same way, you have an argument in the sort method to change the orientation (link).

Range("A1:C13").Sort Key1:=Range("A1"), _
                     Order1:=xlAscending, _
                     Orientation:=xlSortRows

More Tutorials

    • Count Rows using VBA in Excel
    • Excel VBA Font (Color, Size, Type, and Bold)
    • Excel VBA Hide and Unhide a Column or a Row
    • Excel VBA Range – Working with Range and Cells in VBA
    • Apply Borders on a Cell using VBA in Excel
    • Find Last Row, Column, and Cell using VBA in Excel
    • Insert a Row using VBA in Excel
    • Merge Cells in Excel using a VBA Code
    • Select a Range/Cell using VBA in Excel
    • SELECT ALL the Cells in a Worksheet using a VBA Code
    • ActiveCell in VBA in Excel
    • Special Cells Method in VBA in Excel
    • UsedRange Property in VBA in Excel
    • VBA AutoFit (Rows, Column, or the Entire Worksheet)
    • VBA ClearContents (from a Cell, Range, or Entire Worksheet)
    • VBA Copy Range to Another Sheet + Workbook
    • VBA Enter Value in a Cell (Set, Get and Change)
    • VBA Insert Column (Single and Multiple)
    • VBA Named Range | (Static + from Selection + Dynamic)
    • VBA Range Offset
    • VBA Wrap Text (Cell, Range, and Entire Worksheet)
    • VBA Check IF a Cell is Empty + Multiple Cells

    ⇠ Back to What is VBA in Excel

    Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes

    Excel already has a couple of ways to sort data quickly.

    You can easily sort a data set by using the sort icons in the ribbon or the sort dialog box.

    Sort Data options in the ribbon

    Then why do you need to know how to do this using VBA?

    Knowing how to sort data using VBA can be helpful when included as a part of your code. For example, suppose you get a data set daily/weekly that you need to format and sort in a specific order.

    You can create a macro to do all this for you with a single click. That will save you a lot of time and effort every time you do it.

    Also, if you create Excel dashboards, you can take Excel sorting capability to a new level by allowing the user to sort the data just by double-clicking on the header (as shown below).

    Sort Data Using VBA - Double Click Demo

    I will cover how to create this later in this tutorial. Let’s first quickly get the basics straight.

    Understanding the Range.Sort Method in Excel VBA

    When sorting using VBA, you need to use the Range.Sort method in your code.

    The ‘Range’ would be the data that you’re trying to sort. For example, if you’re sorting the data in A1:A10, then ‘Range’ would be Range(“A1:A10”).

    You can also create a named range and use it instead of the cell references. For example, if I create a named range ‘DataRange’ for the cells A1:A10, then I can also use Range(“DataRange”)

    With the sort method, you need to provide some additional information through parameters. Below are the key parameters you need to know:

    • Key – here you need to specify the column that you want to sort. For example, if you want to sort column A, you need to use key:=Range(“A1”)
    • Order – here you specify whether you want the sorting in an ascending order or the descending order. For example, if you want the sorting in ascending order, you will use Order:=xlAscending
    • Header – here you specify whether your data set has headers or not. If it has headers, the sorting starts from the second row of the data set, else it starts from the first row. To specify that your data has headers, you will use Header:=xlYes

    While these three suffices in most of the cases, you can read more about the parameters in this article.

    Now let’s see how to use the Range.Sort method in VBA to sort data in Excel.

    Sorting a Single Column Without Header

    Suppose you have a single column without header (as shown below).

    Data for sorting with VBA - without headers single column

    You can use the below code to sort it in ascending order.

    Sub SortDataWithoutHeader()
    Range("A1:A12").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
    End Sub

    Note that I have specified the data range manually as Range(“A1:A12”).

    In case there might be changes in the data and values might be added/deleted, you can use the below code that automatically adjusts based on the filled cells in the dataset.

    Sub SortDataWithoutHeader()
    Range("A1", Range("A1").End(xlDown)).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
    End Sub

    Note that instead of Range(“A1:A12”), I have used, Range(“A1”, Range(“A1”).End(xlDown)).

    This will check the last consecutively filled cell in the column and include it in sorting. In case there are blanks, it will only consider data till the first blank cell.

    You can also create a named range and use that named range instead of the cell references. For example, if the named range is DataSet, your code would now be as shown below.

    Sub SortDataWithoutHeader()
    Range("DataRange").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
    End Sub

    Now let me quickly explain the parameters used in the above examples:

    • Key1:=Range(“A1”) – Specified A1 so that the code would know which column to sort.
    • Order1:=xlAscending – Specified the order as xlAscending. If you want it to be in the descending order, use xlDescending.
    • Header:= xlNo – Specified that there are no headers. This is also the default value. So even if you omit this, your data will be sorted considering it has no headers.

    Wondering where to put this VBA code and how to run the macro? Read this tutorial!

    Sorting a Single Column With Header

    In the previous example, the data set did not have a header.

    When your data has headers, you need to specify that in the code so that the sorting can start from the second row of the dataset.

    Suppose you have a dataset as shown below:

    Dataset to sort data using VBA in Excel

    Below is the code that will sort the data in descending order based on the sales of the stores.

    Sub SortDataWithHeader()
    Range("DataRange").Sort Key1:=Range("C1"), Order1:=xlDescending
    End Sub

    Note that I have created a named range – ‘DataRange’, and used this named range in the code.

    Sorting Multiple Columns With Headers

    So far in this tutorial, we have seen how to sort a single column (with and without headers).

    Now, what if you want to sort based on multiple columns.

    For example, in the below data set, what if I want to first sort by the state code, and then by the store.

    Dataset to sort data using VBA in Excel

    Here is the code that will sort multiple columns at one go.

    Sub SortMultipleColumns()
    With ActiveSheet.Sort
         .SortFields.Add Key:=Range("A1"), Order:=xlAscending
         .SortFields.Add Key:=Range("B1"), Order:=xlAscending
         .SetRange Range("A1:C13")
         .Header = xlYes
         .Apply
    End With
    End Sub

    Below is the result that you will get.

    Sorting Multiple Columns Using VBA

    In the above example, the data is first sorted by the state code (column A). Then within the state code data, it is again sorted by the Store (Column B). This order is determined by the code in which you mention it.

    Sorting Data Using Double Click on Header

    If you’re creating a dashboard or want more ease of use in your reports, you can write a VBA code that will sort the data when you double click on the headers.

    Something as shown below:

    Sort Data with VBA in Excel Using Double Click

    Below is the code that will allow you to do this:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim KeyRange As Range
    Dim ColumnCount As Integer
    ColumnCount = Range("DataRange").Columns.Count
    Cancel = False
    If Target.Row = 1 And Target.Column <= ColumnCount Then
    Cancel = True
    Set KeyRange = Range(Target.Address)
    Range("DataRange").Sort Key1:=KeyRange, Header:=xlYes
    End If
    End Sub

    Note that I have created a named range (“DataRange”) and have used it in the code instead of using the cell references.

    As soon as you double-click on any of the headers, the code disables the usual double-click functionality (which is to get into the edit mode) and uses that cell as the key while sorting the data.

    Also note that as of now, this code will sort all the columns in ascending order only.

    Note that double-click is a trigger allows Excel to run the specified code. These triggers such as double-click, opening a workbook, adding a new worksheet, changing a cell, etc. are called events and can be used to run macros in Excel. You can read more about Excel VBA events here.

    Where to put this code?

    You need to paste this code into the code window of the sheet in which you want this double click sort functionality.

    To do this:

    • Right-click on the sheet tab.
    • Click on View Code.
    • Paste the code in the code window of the sheet in which your data resides.

    Now what if you want to sort the first two columns (‘State’ and ‘Store’) in ascending order, but ‘Sales’ column in descending order.

    Here is the code that will do it:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim KeyRange As Range
    Dim ColumnCount As Integer
    ColumnCount = Range("DataRange").Columns.Count
    Cancel = False
    If Target.Row = 1 And Target.Column <= ColumnCount Then
    Cancel = True
    Set KeyRange = Range(Target.Address)
    If Target.Value = "Sales" Then
    SortOrder = xlDescending
    Else
    SortOrder = xlAscending
    End If
    Range("DataRange").Sort Key1:=KeyRange, Header:=xlYes, Order1:=SortOrder
    End If
    End Sub

    In the above code, it checks if the cell that is double-clicked is the Sales header or not. If yes, then it assigns the xlDescending value to the variable SortOrder, else it makes it xlAscending.

    Now let’s take this a notch further and show a visual Marker (arrow and colored cell) in the header when it is sorted.

    Something as shown below:

    Sort Data Using VBA - Double Click Demo

    To get this, I have added a new worksheet and made the following changes in it (you can download the example file and follow along):

    • Changed the name of the new sheet to ‘BackEnd’.
    • In cell B2, entered an arrow symbol (to do this, go to Insert and click on ‘Symbol’ option).
    • Copy and paste the headers from the data set to cell A3:C3 in the ‘Backend’ sheet.
    • Use the following function in cell A4:AC4:
      =IF(A3=$C$1,A3&" "&$B$1,A3)
    • Rest of the cells will automatically get filled by the VBA code when you double click on the headers to sort the column.

    Your backend sheet would look something as shown below:

    Sort Data using VBA - Backend for double click with arrow

    Now you can use the below code to sort the data by double-clicking on the headers. When you double-click on a header, it will automatically get the arrow in the header text. Note that I have also used conditional formatting to highlight the cell as well.

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim KeyRange As Range
    Dim ColumnCount As Integer
    ColumnCount = Range("DataRange").Columns.Count
    Cancel = False
    If Target.Row = 1 And Target.Column <= ColumnCount Then
    Cancel = True
    Worksheets("Backend").Range("C1") = Target.Value
    Set KeyRange = Range(Target.Address)
    Range("DataRange").Sort Key1:=KeyRange, Header:=xlYes
    Worksheets("BackEnd").Range("A1") = Target.Column
    For i = 1 To ColumnCount
    Range("DataRange").Cells(1, i).Value = Worksheets("Backend").Range("A4").Offset(0, i - 1).Value
    Next i
    End If
    End Sub

    Note that this code works well for the way my data and workbook is constructed. If you change the structure of the data, you will have to modify the code accordingly.

    Download the Example File

    You May Also Like the Following Excel Tutorials:

    • Sort Worksheets in Excel (Alphabetically)
    • How to Filter Data in a Pivot Table in Excel.
    • Dynamic Excel Filter Search Box – Extract Data as you Type.
    • How to do a Multi-level Data Sorting in Excel.
    • Excel Advanced Filter – A Complete Guide with Examples.
    • 24 Useful Excel Macro Examples for VBA Beginners.
    • How to Use Excel VBA InStr Function (with practical EXAMPLES).
    • Excel VBA Autofilter.

    Содержание

    1. Excel макрос сортировка макросом
    2. Как отсортировать ячейки Excel из макроса VBA?
    3. Vba excel сортировка диапазона
    4. VBA сортировка диапазона
    5. VBA сортировка выделенного диапазона
    6. Сортировка диапазона данных
    7. Сортировка в плавающем диапазоне в VBA (Формулы/Formulas)
    8. сортировка выделенного диапазона макросом (Макросы/Sub)
    9. Сортировка в VBA. Вопрос

    Excel макрос сортировка макросом

    БлогNot. Как отсортировать ячейки Excel из макроса VBA?

    Как отсортировать ячейки Excel из макроса VBA?

    Просто понадобился пример программной сортировки чисел из кода на VBA.

    Отметим, что решать многие счётные задачи в Excel можно как «вручную», программируя типовые алгоритмы, так и вызывая стандартные функции VBA или Excel, если таковые имеются.

    Поэтому в примере можно сортировать и «пузырьком», и готовым методом Range.Sort .

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

    Служебная функция getArrayFromCells , почти такая же, как здесь, считывает глобальный вещественный массив A из подряд заполненных ячеек столбца «A» и определяет его размерность N .

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

    Ниже показан этот листинг и прикреплён файл в архиве .zip с книгой .xlsm (документ Excel с макросами). Если при открытии книги Excel предупреждает о наличии макросов, их выполнение нужно разрешить:

    Скачать этот пример в архиве .zip с книгой Excel .xlsm (15 Кб)

    Кстати:
    Если при вставке кода в редактор Visual Basic for Applications (или вставке куда-либо кода, скопированного из VBA) символы кириллицы превращаются в «кракозябры» или вопросительные знаки, установите русскую раскладку клавиатуры перед копированием в Буфер Обмена.

    Источник

    Vba excel сортировка диапазона

    VBA сортировка диапазона

    ​Смотрите также​​xlGuess. Let Microsoft​
    ​ VBA нужного диапазона​ Key2:= _​Set rn =​Pelena​ кнопку. Я думаю,​ не хотите писать​ или «В»​ зависит, как вы​ меню Paste и​Caption и ID​И при сортировке​: Сделал так:​Hamletiv​ y + 1:​ Mod 2 Next​
    ​atomreal​ Excel determine whether​ приходится отделять его​
    ​[b1], Order2:=xlAscending, Header:=xlYes,​ Selection​:​ на этот раз​ свой сортировочный метод​Проблема в том,​ хотите преобразовать стандартную​ меню Paste Special​ для этих меню​ столбца А с​Sub D()​: Поиск не помог​ ReDim Preserve arr2(1​ With ActiveSheet.Sort .SortFields.Clear​: Доброго времени суток.​ there’s a header,​ от заголовков пустой​
    ​ OrderCustom:=1, MatchCase:= _​rn.Columns(1).NumberFormat = «dd.mm.yyyy»​

    ​satrman​​ вам идея должна​ и подменять им​ что в столбце​ сортировку, а раз​ на свой метод:​ такие:​ параметром Order1:=xlDescending все​Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 =​ (видимо потому что​ To j, 1​ .SortFields.Add Key:=Range(«F2:F» &​Помогите пожалуйста разобраться,​ and to determine​ строкой. Возникает проблема​False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers,​rn.Columns(1).Value = rn.Columns(1).Value​, оформите код тегами​ быть понятна.​ штатный, то вам,​ «А» есть истинно​ так, то и​ FantomPaste. Т.е., когда​Sort &Ascending 210​

    ​ эти ячейки со​​ «= R[-1]C»​
    ​ я нуб в​ To y) For​ lr), SortOn:=xlSortOnValues, _​ как отсортировать диапазон​ where it is,​ со сводными. Как​ _​rn.Columns(2).NumberFormat = «hh:mm:ss»​ (кнопка #)​gomboev​ видимо, остается копировать​ пустые ячейки (без​ собственно ее алгоритм.​ вы делаете Paste,​Sort Des&cending 211​ значением «» перескакивают​Selection.Copy​ макросах)​ z = 0​ Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add​ с данными по​ if there is​ по уму это​DataOption2:=xlSortTextAsNumbers​rn.Columns(2).Value = rn.Columns(2).Value​satrman​: VladConn​ формулы в значения​ формул и значений),​VladConn​ то будет исполняться​Альтернативный (и более​ вверх, а числа​Selection.PasteSpecial xlPasteValues​Есть код:​ To j -​ Key:=Range(«A2:A» & lr),​ первому столбцу в​ one.​ делается?​’. ​rn.Sort Key1:=[a1], Order1:=xlAscending,​: Все, разобрался сам​огромное спасибо за​ и сортировать уже​ которые при сортировке​gomboev​ мой метод (процедура,​ простой) вариант такой:​ оказываются внизу (по​Application.CutCopyMode = False​

    ​ SortOn:=xlSortOnValues, _ Order:=xlAscending,​​ VBA так, что​xlNo (default). (The​admin​’ СМЕЩАЕМСЯ НА​ Key2:= _​ спасибо!​ идею! сделал!​ их, а потом​ всегда остаются внизу​: VladConn,​ функция, макрос; назовите​ не пользоваться формулами​ убыванию)​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Clear​Selection.SpecialCells(xlCellTypeBlanks, 1).FormulaR1C1 =​ 1, y) =​ DataOption:=xlSortNormal .SetRange Range(«A1:F»​ бы сначала были​ entire range should​: А какой код​ ОДНУ СТРОКУ ВНИЗ​[b1], Order2:=xlAscending, Header:=xlYes,​Flatcher​

    ​выложу файлик с​​ программно заменять на​

    VBA сортировка выделенного диапазона

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

    ​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Add Key:=Range(«D:D»), _​

    ​ «= R[-1]C»​
    ​ cell(cl + z)​ & lr): .Header​
    ​ чётные номера стеллажей,​
    ​ be sorted).​ для сортировки вы​
    ​ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА​
    ​ OrderCustom:=1, MatchCase:= _​
    ​: Подскажите пожалуйста как​

    ​ примерчиком, может кому​ формулы.​ столбце «В», ячейкам​ тупость, но я​ такой подмены обязательно​ Вместо них можно​ сортировать столбец В,​SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal​Selection.Copy​ Next z End​ = xlYes: .MatchCase​

    ​xlYes. (The entire​
    ​ используете?​
    ​ActiveCell.Offset(1, 0).Select​
    ​False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers,​
    ​ организовать сортировку выделенного​
    ​ нужно будет​
    ​В столбец А​
    ​ присваивается значение «»​
    ​ не нашел ничего​
    ​ должна сопровождаться своим​
    ​ повесить кнопку или​
    ​ то такого не​
    ​With ActiveWorkbook.Worksheets(«пслн»).Sort​

    ​Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,​ Select Next cl​ = False .Orientation​ нечетные. Я не​

    ​ range should not​​Guest​Loop​

    ​ _​​ диапазона макросом? В​

    ​satrman​
    ​ в первые 5​ при определенном условии​
    ​ подходящего в теме​
    ​ зеркальным собратом, который​
    ​ меню, которые бы​
    ​ происходит, и пустые​
    ​.SetRange Selection​
    ​ SkipBlanks _​
    ​ arr1 = Application.Transpose(arr1):​
    ​ = xlTopToBottom: .SortMethod​
    ​ стал всю таблицу​
    ​ be sorted).​
    ​: К примеру Range(«A3»).CurrentRegion.Sort​
    ​End Sub​
    ​DataOption2:=xlSortTextAsNumbers​
    ​ коде постарался максимально​
    ​: Вопрос от новичка.​

    ​ строк вбейте 1,​
    ​ (по средствам формул)​

    Сортировка диапазона данных

    ​ «Copy-Past» 8(​​ восстанавливает исходную функциональность​
    ​ программно вычисляли колонку​ ячейки остаются внизу,​.Header = xlGuess​:=False, Transpose:=False​ arr2 = Application.Transpose(arr2)​
    ​ = xlPinYin: .Apply​ грузить, стеллажей около​Guest​ Key1:=Range(«A3»), Key2:=Range(«C3»), Key3:=Range(«E3»)​nilem​’. ​ расписать все​

    ​ Записал макрос по​​ 5, 4, 3,​ и при сортировке​Отказаться от использования​ подмененного меню. Иначе​
    ​ «А», очищая ее​ а ячейки с​.MatchCase = False​Application.CutCopyMode = False​ Cells(UBound(arr1, 1) +​ End With Columns(6).ClearContents​ сотни. Система выгружает​: Из-за незнания этого​
    ​A2 пустая​: попробуйте так:​’ СМЕЩАЕМСЯ НА​Апострофф​ сортировке диапазона.​ 2. В столбец​ по убыванию псевдо​ формул в ячейках​
    ​ — в вашем​ строки, когда соответствующие​ числами сортируются наверху​.Orientation = xlTopToBottom​End Sub​ 2, 1).Resize(UBound(arr2, 1),​ End Sub​ продукты на запасе​
    ​ метода пришлось по-домашнему​vikttur​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub СОРТИРОВКА()​ ОДНУ СТРОКУ ВНИЗ​: С минимальным отклонением​В макросе прописано:​ В в эти​ пустые ячейки перескакивают​ я не могу,​
    ​ Excel все книги​ ячейки в колонке​

    ​ по убыванию​​.SortMethod = xlPinYin​
    ​После выполнения диапазон​ UBound(arr2, 2)) =​Nordheim​ в стеллажах по​Range(«A1″).Activate​: Павлов пришел :)​Dim r As​ ДЛЯ ПРОДОЛЖЕНИЯ ПОИСКА​ от стиля и​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub RegAlfabet()​
    ​ строки вставьте формулу​ вверх списка. Вот​ так как программка​ будут работать нестандартно.​ «B» истинно пусты.​Получается, что значение​.Apply​ остается выделенным. В​
    ​ arr2 Cells(2, 1).Resize(UBound(arr1,​
    ​: Еще вариант!​ факту.​Set CurrentReg =​
    ​Николай, здравствуйте! Почему​
    ​ Range, adr$​
    ​ActiveCell.Offset(1, 0).Select​ если я угадал​’​ =IF(AХ>1,AХ,»»), где Х​ с этим-то и​ уже сильно разрослась,​ Вызов процедуры подмены​ После этого стандартная​ «» (пусто) задаваемое​End With​ код нужно добавить​ 1), UBound(arr1, 2))​Sub Test() Dim​я начал было,​ ActiveCell.CurrentRegion​ так редко с​
    ​Set r =​

    ​’ ЦИКЛ​​ поля сортировки -​
    ​’ RegAlfabet Макрос​ — это число​ надо справиться.​ и ставить всё​ осуществляется при открытии​ сортировка будет по​ с помощью формулы​End Sub​ сортировку выделенного диапазон​ = arr1 End​ i&, j&, cell​ а потом зашел​

    ​R = CurrentReg.Rows.Count​​ нами?​
    ​ Sheets(«Report»).UsedRange.Find(«Операция», LookIn:=xlValues, lookat:=xlWhole)​Do​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub СОРТИРОВКА()​’​ от 1 до​gomboev​ на уши и​ книги, откат подмены​ результатам выглядеть идентичной​ это совсем не​Работает :)​ по столбцу D​ Sub​ As Range Dim​ в тупик:​C = CurrentReg.Columns.Count​Пользователь111​If Not r​’ ПРОДОЛЖАЕМ ПОИСК​Dim rn As​With ActiveWorkbook.Worksheets(«REG and​ 5.​: В файле примерчик​ переделывать желания нет,​ — перед ее​ для обоих столбцов.​ пусто, хоть и​Вопрос закрыт.​ (4-й столбец по​Garni​ cl&, arr1(), arr2(),​Sub sortstel() Dim​
    ​Set CurrentReg_1 =​: Наверное,сортировка выделения диапазона​ Is Nothing Then​ ДАЛЕЕ​ Range​ AP»).Sort​Поставьте две кнопки:​ моей проблеммы.​ вообще.​ закрытием.​VladConn​ выглядет также как​gomboev​ счету) по убыванию​: И еще вариант​ x%, y%, z%​
    ​ stel As Range​
    ​ Range(ActiveCell.Offset(1, 0), Cells(R,​ без заголовков единственный​adr = r.Address​Cells.FindNext(After:=ActiveCell).Select​Dim vAdr1 As​.SetRange Range(«C5:O100»)​Private Sub CommandButton1_Click()​Помогите, пожалуйста!​Дайте, пжалуйста, мне​Теперь касательно самого​gomboev​ совсем пустая ячейка​: Умные люди, подскажите!​ (там числа). Верхняя​
    ​SAS888​

    ​ i = Cells(Rows.Count,​​ Set stel =​
    ​ C))​ вариант​Do​’ ЗАПИСЫВАЕМ АДРЕС​ String​
    ​.Header = xlYes​ Range(«B1:B5»).Copy Range(«B1:B5»).PasteSpecial Paste:=xlPasteValues,​Димит​ ваш mail, я​ сортировочного метода (а​: Supreme Being,​ (например, очищенная кнопкой​Application.Range(«A2:U101»).SortSpecial _ Key1:=ActiveSheet.Range(«A2»),​ строка диапазона не​
    ​: Можно и так:​ 1).End(xlUp).Row j =​ Sheet(1).Range(«A:A») For Each​CurrentReg_1.Sort Key1:=Range(«A2») ‘​Guest​
    ​With r.CurrentRegion​ НАЙДЕННОЙ ЯЧЕЙКИ В​Dim vAdr2 As​.MatchCase = False​ Operation:=xlNone, SkipBlanks _​
    ​: Можно заменить «»​

    ​ отошлю небольшой примерчик​​ то и методов).​чесно говоря, я​ Delete).​ Order1:=xlAscendingВот эта строка​ заголовки и тоже​
    ​ Private Sub CommandButton1_Click()​ Cells(1, Columns.Count).End(xlToLeft).Column Set​ cell In stel.Cells​ и т.д​: Заело..Не могу придумать​

    ​With .Resize(.Rows.Count -​​ ПЕРЕМЕННУЮ​ String​.Orientation = xlTopToBottom​ :=False, Transpose:=False Dim​
    ​ на «я». Если​ иллюстрирующий суть моей​ Как правило, кастомизированная​ не программист, я​Как с этим​ сортирует у меня​ подлежат сортировке.​ Dim i As​ cell = Range(Cells(1,​ If cell.Value Like​Смешно, конечно!​ код выделения Current​ 1)​vAdr2 = Selection.Address​’ НА ВСЯКИЙ​.SortMethod = xlPinYin​ i As Integer​ не нравится в​

    ​ проблемы.​​ сортировка исполняется в​ просто в качестве​
    ​ справиться?​

    ​ столбец, но не​​Записал макрос сортировки:​ Long, a(), q:​ 1), Cells(i, j))​ «стеллаж **» Then​KuklP​ региона без верней​.Sort Key1:=.Cells(1, 1),​’ СРАВНИВАЕМ ПЕРЕМЕННЫЕ​

    ​ СЛУЧАЙ АКТИВИРУЕМ ПЕРВУЮ​​.Apply​ For i =​ столбце буквы «я»​И если вас​

    ​ своих классах, экспонирующих​​ хобби пишу программки​
    ​VladConn​ так как надо.​Sub сортировка()​ Application.ScreenUpdating = False​ cell.Sort Key1:=cell(1), order1:=xlAscending,​
    ​ s = cell.Value​: Что смешного? Вы​

    ​ строки​​ Order1:=xlAscending, _​ (ЕСЛИ СОВПАДАЮТ С​ ЯЧЕЙКУ​End With​ 1 To 5​ , их можно​ не затруднит, то​ такие сортировочные процедуры,​ для себя и​: gomboev,​Она сортирует по​
    ​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Clear​ a = Range(«A2:A»​ Header:=xlYes For cl​ ‘стеллаж a =​ и сами могли​EducatedFool​Key2:=.Cells(1, 2), Order2:=xlAscending,​ АДРЕСОМ ПЕРВОЙ НАЙДЕННОЙ​Cells(1, 1).Select​End Sub​ If Range(«B» &​
    ​ скрыть условным форматированием​
    ​ покажите на нём​ или методы. Инстанциирование​ окружающих, чтобы облегчить​При сортировке только​ содержимому ячеек (т.е.​ActiveWorkbook.Worksheets(«пслн»).Sort.SortFields.Add Key:=Range(«D57:D70»), _​ & Cells(Rows.Count, 1).End(xlUp).Row).Value​ = j +​ cell.Offset(0, 1) ‘артикул​ бы нажатьF1 на​: Какая разница, диапазон​ Header:=xlYes​ ЯЧЕЙКИ ОСТАНАВЛИВАЕМ ЦИКЛ)​’ НАХОДИМ ПЕРВУЮ​Но мне нужно,​ CStr(i)).Value = «»​ или сортировкой по​ же как мне​ такого класса в​ свой труд и​ истинно пустые ячейки​ по формулам, которые​SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal​ For i =​ 1 To cell.Count​ n = cell.Offset(0,​ слове Sort, как​ для сортировки включает​End With​If Not vAdr1​

    ​ ЯЧЕЙКУ СО СЛОВОМ​​ чтобы правый нижний​
    ​ Then Range(«B» &​ скрытому столбцу. См.​
    ​ с ней справиться.​ виде объекта и​ жизнь. Поэтому, так​

    Сортировка в плавающем диапазоне в VBA (Формулы/Formulas)

    ​ всегда идут последними.​​ там есть), а​With ActiveWorkbook.Worksheets(«пслн»).Sort​ 1 To UBound(a,​
    ​ Step j Select​
    ​ 2) ‘ название​
    ​ за Вас это​
    ​ в себя строку​
    ​End With​
    ​ <> vAdr2 Then​ ОПЕРАЦИЯ​
    ​ край диапазона был​
    ​ CStr(i)).ClearContents Next i​
    ​gomboev​
    ​Заранее благодарен!​
    ​ позволяет использовать его​
    ​ просто разобраться я​
    ​ Для того, чтобы​
    ​ надо чтобы сортировала​
    ​.SetRange Range(«A57:D70″)​ 1) q =​ Case Right(cell(cl).Value, 1)​ k = cell.Offset(0,​ любезно сделал EducatedFool.​ заголовка, или нет?​Set r =​ Exit Do​Cells.Find(What:=»Операция», After:=ActiveCell, LookIn:=xlFormulas,​ меняющимся в зависимости​ End Sub Private​: не катит, потому​Димит​ сортировочные методы. Т.е.​
    ​ не могу. Если​ кастомизировать сортировку, нужно​ по значениям, которые​.Header = xlGuess​

    ​ Split(a(i, 1)) If​​ Case 1, 3,​​ 3) ‘ количество​​ Да и приведенный​В параметрах вызова​

    ​ Sheets(«Report»).UsedRange.FindNext(r)​​’ ВЫДЕЛЯЕМ СТОЛБЕЦ​ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,​

    сортировка выделенного диапазона макросом (Макросы/Sub)

    ​ от значения в​​ Sub CommandButton2_Click() Dim​ что при обратной​: Если заменить в​ имя подменивающего макроса,​ не сложно, можно​

    ​ писать свой класс​​ эти формулы выдают​.MatchCase = False​ Val(q(UBound(q))) Mod 2​ 5, 7, 9​
    ​ ei = cell.Offset(0,​
    ​ Вами код, это​ метода SORT можно​
    ​Loop While r.Address​ С ЗНАЧЕНИЯМИ ОТ​
    ​ _​ другой ячейке. Т.е.​
    ​ i As Integer​ сортировке «я» находится​ столбце с формулами​
    ​ или в данном​
    ​ немного подробнее о​ и вызывать его​gomboev​
    ​.Orientation = xlTopToBottom​ = 0 Then​ x = x​
    ​ 4) ‘ единица​
    ​ танцы с бубнами.​ указать, есть ли​ <> adr​
    ​ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ​
    ​MatchCase:=False, SearchFormat:=False).Select​ например если в​ For i =​
    ​ в начале списка​
    ​ относительные ссылки на​
    ​ случае метода может​
    ​VladConn​
    ​ сортировочный метод путем​: вернее не так,​
    ​.SortMethod = xlPinYin​
    ​ a(i, 1) =​
    ​ + 1: ReDim​
    ​ измерения​
    ​ Лучше так:​ у сортируемого диапазона​
    ​End If​Range(Selection, Selection.End(xlDown)).Select​
    ​’ ЗАПИСЫВАЕМ АДРЕС​ ячейке S1 стоит​
    ​ 1 To 5​
    ​gomboev​
    ​ абсолютные, то это​ выглядеть так:​: gomboev,​
    ​ подмены имени макроса​
    ​ всё напутал, ссори,​
    ​.Apply​
    ​ «_» & a(i,​ Preserve arr1(1 To​
    ​Помогите пожалуйста, кто​
    ​Set tbl =​ заголовок:​End Sub​
    ​’ И ВЛЕВО​
    ​ НАЙДЕННОЙ ЯЧЕЙКИ В​ число 15, то​ Range(«B» & CStr(i)).Formula​: отзовитесь, уважаемые программисты!​
    ​ решит часть проблем.​objMenuItem.OnAction = «МойСортировочныйОбъект.МойСортировочныйМетод»​В этом же​
    ​ для меню «Data/Sort. «.​ сами-то формулы остаются​End With​
    ​ 1) Next [A2].Resize(UBound(a,​
    ​ j, 1 To​
    ​ знает.​
    ​ [A1].CurrentRegion​
    ​параметр: Header​Flatcher​
    ​Range(Selection, Selection.End(xlToLeft)).Select​
    ​ ПЕРЕМЕННУЮ​
    ​ диапазон должен быть​
    ​ = «=IF(A» &​
    ​у меня, без​Конечно самое удачное,​
    ​Этот класс, очевидно,​ VBA форуме вы​
    ​В своем чуть​ на месте​
    ​End Sub​
    ​ 1)).Value = a​
    ​ x) For z​Ігор Гончаренко​tbl.Offset(1, 0).Resize(tbl.Rows.Count -​
    ​Specifies whether or​
    ​: Апострофф, спасибо работает))​
    ​’ ПРИМЕНЯЕМ СОРТИРОВКУ​

    ​vAdr1 = Selection.Address​​ не «C5:O100», а​
    ​ CStr(i) & 1,A»​
    ​ вашей помощи, ну​ сортировать формулы с​
    ​ может, если я​ найдете тему «Copy-Past»,​
    ​ ли не последнем​Формулы в столбце​
    ​Но как в​
    ​ [A:E].Sort [A1], Header:=xlYes​
    ​ = 0 To​
    ​: Sub SortStel() Dim​ 1, tbl.Columns.Count).Sort. и​
    ​ not the first​Flatcher​
    ​Set rn =​’ ВЫДЕЛЯЕМ СТОЛБЕЦ​
    ​ «C5:O15». Т.е. должен​
    ​ & CStr(i) &​
    ​ никак не получается​ ссылкой на ячейку​
    ​ не ошибаюсь, наследовать​ она на той​
    ​ посте в этом​
    ​ А берут значения​

    ​ нем поставить выделенный​​ [A:A].Replace «_», «»​

    ​ j — 1​​ r&, lr& lr​ т.д.​ row contains headers.​: nilem, спасибо! тоже​

    Сортировка в VBA. Вопрос

    ​ Selection​​ С ЗНАЧЕНИЯМИ ОТ​ поменять номер строки​ «,»»»»)» Next i​ решить эту проблему​ в этой же​ интерфейс IComparable из​ же странице, что​ форуме я как​

    ​ из столбца В​​ диапазон, а не​ End SubПример во​ arr1(z + 1,​

    ​ = Cells(Rows.Count, 1).End(xlUp).Row​​Guest​ Cannot be used​

    ​ все заработало! насколько​

    ​rn.Columns(1).NumberFormat = «dd.mm.yyyy»​​ НАЙДЕННОЙ ЯЧЕЙКИ ВНИЗ​
    ​ (измениться диапазон)​ End SubНажмите первую​ 8(​

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

    ​ (в нем просто​​ фиксированный не понимаю.​ вложении. Откройте файл​ x) = cell(cl​ For r =​

    ​: Век живи,век учись-дураком​​ when sorting PivotTable​ можно оказывается сокращать​rn.Columns(1).Value = rn.Columns(1).Value​Range(Selection, Selection.End(xlDown)).Select​

    ​Возможно как то​ кнопку, потом как​должно же быть​gomboev​ класса, например, Collection​

    ​ Там я привожу​
    ​ это сделать (не​ числа или пусто)​Guest​ и нажмите кнопку​ + z) Next​ 2 To lr​

    Источник

    Понравилась статья? Поделить с друзьями:
  • Сортировка внутри сводной таблицы excel
  • Сортировка всех строк по одному столбцу в excel
  • Сортировка в таблице word по дате
  • Сортировка внутри ячейки excel
  • Сортировка в таблице excel по нескольким условиям