Диапазон сортировки VBA Excel по определенному столбцу

У меня есть таблица, которая может содержать любое количество строк:

Как я уже сказал, он может содержать 1 или ∞ строк.

Я хочу отсортировать диапазон A3: D∞ по ячейке Date, которая в столбце B.
Как это сделать?

Проблема в том, что я не знаю, как выбрать от A3 до последнего row.

Я думаю, что переход к последней строке — неправильный метод.

Я понял, что это выглядит правильно, но диапазон жестко запрограммировано.
Как мне избавиться от жесткого кодирования диапазона?

  Range ("A3: D8"). Sort key1: =  Диапазон ("B3: B8"), _order1: = xlAscending, Header: = xlNo  

Попробуйте этот код:

  Тусклая последняя строка As Longlastrow = Cells (Rows.Count, 2) .End (xlUp) .RowRange ("A3: D" & lastrow) .Sort key1: = Range ("B3: B" & lastrow), _  order1: = xlAscending, Header: = xlNo  

14

Или это:

  Range ("A2", Range  ("D" & Rows.Count) .End (xlUp) .Address) .Sort Key1: = [b3], _ Order1: = xlAscending, Header: = xlYes  

Улучшите этот ответ
ответ дан 30 января 2014 в 08:56
  • Мне нравится этот ответ, поскольку он не включает дополнительную переменную — sonyisda1, 02 сен 2016, 14:31
  • 7
    @ sonyisda1 это плохая причина, вы можете просто заменить переменную формулой. Но более понятно, что происходит с переменной. — Goodbye SE 23 фев. ’17 в 13:52
добавить комментарий |

Или это:

  Range ("A2", Range ("D"  & Rows.Count) .End (xlUp) .Address) .Sort Key1: = [b3], _ Order1: = xlAscending, Header: = xlYes  

-2

Если начальная ячейка диапазона и ключа статична, решение может быть очень простым :

  Диапазон ("A3"). SelectRange (Selection, Selection.End (xlToRight)). SelectRange (Selection, Selection.End (xlDown)). SelectSelection.Sort key1  : = Диапазон ("B3", Диапазон ("B3"). Конец (xlDown)), _order1: = xlAscending, Header: = xlNo  

Улучшите этот ответ
ответил 14 сен 2015, 20:26
  • 12
    Как избежать использования Select в Excel VBA — Вольфи, 29 августа 2017 г., 11:42
добавить комментарий |

Если начальная ячейка диапазона и ключа статична, решение может быть очень простым:

  Range ("A3"). SelectRange (Selection, Selection.End (xlToRight)). SelectRange (Selection, Selection.End (xlDown)). SelectSelection.Sort key1: = Range ("B3",  Range ("B3"). End (xlDown)), _order1: = xlAscending, Header: = xlNo  


Excel VBA — Как использовать Сортировка в таблице Excel с помощью макроса VBA

Эта процедура сортирует данные в порядке убывания TRANS_VALUE в данные, показанные ниже.

 Dim ws As WorksheetSet ws = ActiveSheetDim tbl As ListObjectSet tbl = ws.ListObjects ("Sales_Table") Уменьшить sortcolumn как RangeSet sortcolumn = Range ("Sales_Table [TRANS_VALUE]") с  tbl.Sort .SortFields.Clear .SortFields.Add Key: = sortcolumn, SortOn: = xlSortOnValues, Order: = xlDescending .Header = xlYes .ApplyEnd With 

ВИДЕО-ОБУЧЕНИЕ — УЧИТЕСЬ В СВОЕМ ТЕМПЕ

DEEP DIVE INTO ФУНКЦИИ ПРОСМОТРА XLOOKUP, VLOOKUP, HLOOKUP, LOOKUP, MATCH , ИНДЕКС, ЕСЛИ ОШИБКА, ISNA, IFNA, ВЛЕВО, ВПРАВО, СРЕДНЕЕ, НАЙТИ, ПОИСК, LEN, ЗАМЕНА, ЗАМЕНИТЬ, ОБРЕЗАТЬ, ЧИСТИТЬ & КОСВЕННО . Нажмите здесь, чтобы зарегистрироваться.

КУРС ДОСТУПА MS ДЛЯ НАЧИНАЮЩИХ — Нажмите здесь, чтобы зарегистрироваться


БЕСПЛАТНЫЕ МАТЕРИАЛЫ
70+ ДОЛЖНЫ ЗНАТЬ БЫСТРЫЕ КЛЮЧИ EXCEL: Загрузите pdf
ПОНИМАТЬ И ИСПРАВИТЬ ОШИБКИ EXCEL: скачать pdf

Приведенный выше код относится к данным, показанным ниже.

Чтобы сортировать по цвету ячеек, укажите это в параметре SortOn в Добавить метод. Затем вам необходимо указать цвет для сортировки с помощью свойства SortOnValue объекта SortField (см. Ниже).

  Уменьшить размер столбца как набор заданий ws = ActiveSheet  = sortcolumn, Order: = xlAscending, _ SortOn: = xlSortOnCellColor). SortOnValue.Color = RGB (255, 255, 0) .Header = xlYes .ApplyEnd With 

Для сортировки по значку укажите это в параметре SortOn метода Add . Затем вам нужно указать значок для сортировки с помощью метода Set Icon объекта SortField .

 Dim ws AsWorksheetSet ws  = ActiveSheetDim tbl AsListObjectSet tbl = ws.ListObjects ("Sales_Table") Dim sortcolumnAs RangeSet sortcolumn = Range ("Sales_Table [TRANS_VALUE]") С tbl.Sort .SortFields.Clear .SortFields.Add (Key: = sortcolumnAscending: = x  , _ SortOn: = xlSortOnIcon) .SetIcon _ Icon: = ActiveWorkbook.IconSets (xl3TrafficLights1) .Item (1) .Header = xlYes .ApplyEnd With 

Оцените статью
logicle.ru
Добавить комментарий