🔢 Метод Sort объекта Range
Метод Sort позволяет отсортировать данные в указанном диапазоне по одному или нескольким столбцам. Это аналог кнопки "Сортировка" в Excel.
📌 Синтаксис
🔹 Key1 – первый столбец для сортировки (Range("A1")).
🔹 Order1 – порядок (xlAscending – по возрастанию, xlDescending – по убыванию).
🔹 Header – есть ли заголовки (xlYes / xlNo / xlGuess).
🔹 Orientation – направление (xlSortRows – по строкам, xlSortColumns – по столбцам).
🔹 Остальные параметры – дополнительные уровни сортировки.
📌 Примеры
1️⃣ Простая сортировка по возрастанию (столбец A)
2️⃣ Сортировка по убыванию (столбец B)
3️⃣ Сортировка по двум столбцам (сначала по A, потом по B)
✅ 4. Сортировка без учета регистра
5️⃣ Сортировка по строкам (не по столбцам!)
⚠️ Важно
🔹 Если в диапазоне есть заголовки, указывайте Header:=xlYes, иначе заголовок будет отсортирован вместе с данными.
🔹 MatchCase:=True учитывает регистр, а False — игнорирует.
🔹 Orientation:=xlSortRows используется для сортировки по строкам, а xlSortColumns (по умолчанию) — для сортировки по столбцам.
#VBA #ExcelVBA #Sort #Range #Сортировка
Метод Sort позволяет отсортировать данные в указанном диапазоне по одному или нескольким столбцам. Это аналог кнопки "Сортировка" в Excel.
📌 Синтаксис
Range.Sort Key1, Order1, Key2, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, DataOption1, DataOption2, DataOption3
🔹 Key1 – первый столбец для сортировки (Range("A1")).
🔹 Order1 – порядок (xlAscending – по возрастанию, xlDescending – по убыванию).
🔹 Header – есть ли заголовки (xlYes / xlNo / xlGuess).
🔹 Orientation – направление (xlSortRows – по строкам, xlSortColumns – по столбцам).
🔹 Остальные параметры – дополнительные уровни сортировки.
📌 Примеры
1️⃣ Простая сортировка по возрастанию (столбец A)
Sub SortAscending()
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
End Sub
2️⃣ Сортировка по убыванию (столбец B)
Sub SortDescending()
Range("B1:B10").Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlYes
End Sub
3️⃣ Сортировка по двум столбцам (сначала по A, потом по B)
Sub SortTwoColumns()
Range("A1:C10").Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlDescending, _
Header:=xlYes
End Sub
✅ 4. Сортировка без учета регистра
Sub SortCaseInsensitive()
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, MatchCase:=False
End Sub
5️⃣ Сортировка по строкам (не по столбцам!)
Sub SortByRows()
Range("A1:D5").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, Orientation:=xlSortRows
End Sub
⚠️ Важно
🔹 Если в диапазоне есть заголовки, указывайте Header:=xlYes, иначе заголовок будет отсортирован вместе с данными.
🔹 MatchCase:=True учитывает регистр, а False — игнорирует.
🔹 Orientation:=xlSortRows используется для сортировки по строкам, а xlSortColumns (по умолчанию) — для сортировки по столбцам.
#VBA #ExcelVBA #Sort #Range #Сортировка
🔢 Сортировка данных в ListView
Чтобы сортировать данные в табличных отчетах ListView, добавьте следующий код VBA Excel в модуль формы:
Теперь при клике по заголовку любого столбца произойдет сортировка строк по данным этого столбца. При первом клике будет порядок сортировки — по убыванию, при втором — по возрастанию, при третьем — снова по убыванию и так далее.
💡 Небольшое пояснение для поста выше:
В таблицах ListView нумерация столбцов начинается с 0 (ColumnHeader.SubItemIndex), а нумерация заголовков столбцов - с 1 (ColumnHeader.Index).
#VBA #Excel #ListView #Сортировка #Sort #ColumnHeader
Чтобы сортировать данные в табличных отчетах ListView, добавьте следующий код VBA Excel в модуль формы:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With Me.ListView1
.Sorted = True
.SortKey = ColumnHeader.SubItemIndex ' Сортировка по выбранному столбцу
.SortOrder = IIf(.SortOrder = 1, 0, 1) ' Переключение порядка сортировки
End With
End Sub
Теперь при клике по заголовку любого столбца произойдет сортировка строк по данным этого столбца. При первом клике будет порядок сортировки — по убыванию, при втором — по возрастанию, при третьем — снова по убыванию и так далее.
💡 Небольшое пояснение для поста выше:
В таблицах ListView нумерация столбцов начинается с 0 (ColumnHeader.SubItemIndex), а нумерация заголовков столбцов - с 1 (ColumnHeader.Index).
#VBA #Excel #ListView #Сортировка #Sort #ColumnHeader
❤4👍4