Оглавление
В этой статье мы рассмотрим различные способы сортировки дат в Excel. Вы узнаете, как быстро расположить даты в хронологическом порядке, сортировать по месяцам, игнорируя годы, сортировать дни рождения по месяцам и дням, а также как автоматически сортировать по дате при вводе новых значений.
Встроенные параметры сортировки Excel являются мощными и эффективными инструментами, но они не всегда работают правильно, когда дело доходит до сортировки дат. В этом руководстве вы узнаете несколько полезных трюков, которые позволят упорядочить Excel по датам осмысленным образом, не испортив ваши данные.
Как отсортировать даты в хронологическом порядке
Упорядочить даты в хронологическом порядке в Excel очень просто. Вы просто используете стандартную функцию Сортировка по возрастанию вариант:
- Выберите даты, которые вы хотите отсортировать в хронологическом порядке.
- На Главная во вкладке Форматы группу, нажмите Сортировка и фильтр и выберите Сортировать от самого старого к самому новому В качестве альтернативы вы можете использовать A-Z опция на Данные во вкладке Сортировка и фильтр группа.
Как сортировать по дате в Excel
Параметры сортировки Excel также можно использовать для изменения порядка следования всей таблицы, а не только отдельного столбца. Чтобы отсортировать записи по дате, сохранив строки нетронутыми, главное - развернуть выделение при появлении запроса.
Вот подробные шаги по сортировке данных в Excel по дате:
- В своей электронной таблице выберите даты без заголовка столбца.
- На Главная вкладка, нажмите Сортировка и фильтр и выберите Сортировать от самого старого к самому новому .
- Сайт Предупреждение о сортировке появится диалоговое окно. Оставьте значение по умолчанию Расширить выбор выбранный вариант, и нажмите кнопку Сортировать :
Вот и все! Записи были отсортированы по дате, и все строки хранятся вместе:
Как отсортировать по месяцам в Excel
Могут возникнуть ситуации, когда вы захотите сортировка дат по месяцам игнорирование года, например, при группировке дат юбилеев ваших коллег или родственников. В этом случае стандартная функция сортировки Excel не будет работать, поскольку она всегда учитывает год, даже если ячейки отформатированы для отображения только месяца или месяца и дня.
Решение заключается в добавлении вспомогательного столбца, извлечении номера месяца и сортировке по этому столбцу. Чтобы получить месяц из даты, используйте функцию MONTH.
На скриншоте ниже мы извлекаем номер месяца из даты в B2 с помощью этой формулы:
= МОНТ(B2)
Совет. Если результат отображается в виде даты, а не числа, установите параметр Общий формат в ячейки с формулами.
А теперь отсортируйте вашу таблицу по Месяц Для этого выберите номера месяцев (C2:C8), нажмите кнопку Сортировка и фильтр > Сортировать от наименьшего к наибольшему , а затем разверните выделение, когда Excel попросит вас сделать это. Если все сделано правильно, вы получите следующий результат:
Обратите внимание, что наши данные теперь сортируются по месяцам, игнорируя годы и дни внутри каждого месяца. Если вы хотите сортировка по месяцу и дню , затем следуйте инструкциям из следующего примера.
Если названия месяцев введены как текст , затем отсортировать по пользовательскому списку, как описано в этом примере.
Как отсортировать дни рождения в Excel по месяцу и дню
При упорядочивании дат для календаря дней рождения оптимальным решением будет сортировка дат по месяцам и дням. Следовательно, вам нужна формула, которая будет извлекать месяцы и дни из дат рождения.
В этом случае пригодится функция Excel TEXT, которая может преобразовать дату в текстовую строку в указанном формате. Для нашей цели подойдет код формата "mmdd" или "mm.dd".
При исходной дате в B2 формула принимает следующий вид:
=TEXT(B2, "мм.дд")
Затем отсортируйте Месяц и день столбец от наибольшего к наименьшему, и вы получите данные, расположенные в порядке дней каждого месяца.
Того же результата можно достичь, используя формулу DATE следующим образом:
=ДАТА(2000, МЕСЯЦ(B2),ДЕНЬ(B2))
Формула генерирует список дат, извлекая месяц и день из фактической даты в B2 и заменяя настоящий год фальшивым, 2000 в данном примере, хотя вы можете поставить любой. Идея заключается в том, чтобы иметь один и тот же год для всех дат, а затем отсортировать список дат в хронологическом порядке. Поскольку год один и тот же, даты будут отсортированы по месяцу и дню, что является именно тем, что вам нужно.ищет.
Как отсортировать данные по годам в Excel
Когда речь идет о сортировке по годам, проще всего расположить даты в хронологическом порядке с помощью сортировки Excel по возрастанию ( От самого старого к самому новому ) вариант.
Это позволит отсортировать даты по году, затем по месяцу, а затем по дню, как показано на скриншоте ниже.
Если по какой-то причине вас не устраивает такое расположение, то вы можете добавить вспомогательный столбец с формулой YEAR, которая извлекает год из даты:
= ГОД(C2)
После сортировки данных по Год столбца, вы заметите, что даты отсортированы только по году, игнорирование месяцев и дней .
Совет. Если вы хотите сортировать даты по дням без учета месяцев и лет, извлечь день с помощью функции DAY, а затем отсортировать по День колонна:
=DAY(B2)
Как сортировать по дням недели в Excel
Для сортировки данных по дням недели вам также понадобится вспомогательный столбец, как и в предыдущих примерах. В данном случае мы заполним вспомогательный столбец формулой WEEKDAY, которая возвращает число, соответствующее дню недели, а затем выполним сортировку по вспомогательному столбцу.
Для недели, которая начинается с воскресенья (1) по субботу (7), можно использовать следующую формулу:
=WEEKDAY(A2)
Если ваша неделя начинается с понедельника (1) по воскресенье (7), то это то, что нужно:
=WEEKDAY(A2, 2)
Где A2 - ячейка, содержащая дату.
Для данного примера мы использовали первую формулу и получили такой результат:
В случае, если названия дней недели введены как текст но не как даты, то используйте функцию Custom Sort, как описано в следующем примере.
Как отсортировать данные в Excel по названиям месяцев (или дней недели)
В случае, если у вас есть список названий месяцев в виде текст но не как даты, отформатированные для отображения только месяцев, применение сортировки Excel по возрастанию может стать проблемой - она расположит названия месяцев в алфавитном порядке вместо сортировки по порядку месяцев с января по декабрь. В этом случае поможет пользовательская сортировка:
- Выберите записи, которые вы хотите отсортировать по названию месяца.
- На Данные во вкладке Сортировка и фильтр группу, нажмите Сортировать .
- В Сортировать диалогового окна, выполните следующие действия:
- Под Колонка , выберите имя столбца, содержащего названия месяцев.
- Под Сортировать по выберите Значения ячеек .
- Под Заказ , выберите Пользовательский список .
- В Пользовательские списки В диалоговом окне выберите либо полные названия месяцев ( Январь , Февраль , Март , ...) или короткие имена ( Ян , Февраль , Мар ...) в зависимости от того, как месяцы перечислены в вашем рабочем листе:
Готово! Ваши данные были отсортированы по названию месяца в хронологическом, а не в алфавитном порядке:
Совет. Чтобы отсортировать по названия дни недели выберите либо полные имена ( Воскресенье , Понедельник , Вторник , ...) или короткие имена ( Солнце , Пн , Tue ...) в Пользовательские списки диалоговое окно.
Как выполнить автоматическую сортировку по дате в Excel
Как вы убедились, функция сортировки Excel справляется с различными задачами. Единственный недостаток - она не является динамической. То есть вам придется заново сортировать данные при каждом изменении и добавлении новой информации. Возможно, вы задаетесь вопросом, есть ли способ автоматически сортировать данные при добавлении новой даты, чтобы ваши данные всегда были в порядке.
Лучший способ добиться этого - использовать макрос. Ниже приведена пара примеров кода для автоматической сортировки следующих данных по дате в хронологическом порядке.
Макрос 1: Автоматическая сортировка при каждом изменении рабочего листа
Этот макрос выполняется каждый раз, когда происходит изменение в любом месте рабочего листа.
Предполагается, что ваши данные находятся в столбцах с A по C, а даты, по которым вы хотите сортировать, находятся в столбце C, начиная с C2. Также предполагается, что строка 1 содержит заголовки (Header:=xlYes). Если ваши записи находятся в разных столбцах, то сделайте следующие корректировки:
- Измените ссылку A1 на верхнюю левую ячейку целевого диапазона (включая заголовки).
- Измените ссылку C2 на самую верхнюю ячейку, содержащую дату.
Макрос 2: Автоматическая сортировка при внесении изменений в определенный диапазон
Если вы работаете с огромным рабочим листом, содержащим большое количество информации, повторная сортировка при абсолютно любом изменении на листе может оказаться проблематичной. В этом случае имеет смысл ограничить срабатывание макроса изменениями, происходящими в определенном диапазоне. Следующий код VBA сортирует данные только при изменении в столбце C, содержащем даты.
Private Sub Worksheet_Change( ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range( "C:C" )) Is Nothing Then Range( "A1" ).Sort Key1:=Range( "C2" ), _ Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:= False , _ Orientation:=xlTopToBottom End If End SubСовет. Эти макросы можно использовать для автоматической сортировки по любой тип данных В наших примерах коды сортируют в порядке возрастания. Если вы хотите сортировка по убыванию , измените Order1:=xlAscending на Order1:=xlDescending.
Как добавить макрос в рабочий лист
Поскольку оба макроса запускаются автоматически при изменении рабочего листа, код следует вставить в лист, на котором вы хотите отсортировать данные (в данном примере - Лист1). Вот как это сделать:
- Нажмите Alt + F11, чтобы открыть редактор VBA.
- В Исследователь проектов слева, дважды щелкните лист, на котором вы хотите выполнить автоматическую сортировку.
- Вставьте код в окно Код.
Автоматическая сортировка дат с помощью формулы
Предположим, у вас есть список дат, и вы хотите автоматически расположить их в хронологическом порядке в отдельном столбце, рядом с исходным списком. Это можно сделать с помощью следующей формулы массива:
=IFERROR(INDEX($A$2:$A$20, MATCH(ROWS($A$2:A2), COUNTIF($A$2:$A$20, "<="&$A$2:$A$20), 0)), "")
Где A2:A20 - исходные (несортированные) даты, включая несколько пустых ячеек для возможных новых записей.
Введите формулу в пустую ячейку рядом со столбцом с исходными датами (C2 в нашем примере) и нажмите одновременно клавиши Ctrl + Shift + Enter, чтобы завершить ее. Затем перетащите формулу вниз в оставшиеся ячейки (C2:C20 в нашем случае).
Совет. Чтобы вновь добавленные даты сортировались автоматически, убедитесь, что в указанном диапазоне имеется достаточное количество пустых ячеек. Например, наш список дат находится в диапазоне A2:A7, но мы вводим в формулу $A$2:$A$20 и заполняем ими ячейки с C2 по C20. Функция IFERROR предотвращает ошибки в дополнительных ячейках, возвращая вместо них пустую строку ("").
Сортировка по дате в Excel не работает
Если ваши даты сортируются не так, как нужно, скорее всего, они введены в формате, который Excel не может понять, поэтому они воспринимаются как текстовые строки, а не даты. В следующем руководстве объясняется, как отличить так называемые "текстовые даты" и преобразовать их в обычные даты Excel: Как преобразовать текст в дату в Excel.
Вот как сортировать по дате в Excel. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Примеры формулы сортировки по дате (файл .xlsx)
Макрос автоматической сортировки (файл.xlsm)