Как сделать диапазон дат в excel?
Содержание
Формулами.
Исходные: A1 — начальная дата, В1 — длительность проекта в днях.
В А2 формула:
=ЕСЛИ(СТРОКА(A2)>$B$1;0;A1+1)
Протянуть формулу вниз.
Формулы строк, которые ниже требуемого диапазона дат, покажут 0 (ноль).
Нули можно скрыть:
закладка Файл-Параметры-Дополнительно-Для_листа…, снять галку отображения нулевых значений.
Если даты не используются в дальнейших вычилениях, вместо нуля можно выводить пустую строку:
=ЕСЛИ(СТРОКА(A2)>$B$1;"";A1+1)
Для периода, заданного в месяцах или годах, нужно определить количество дней в периоде или последнюю дату.
Например, для месяцев полная формула для А2:
=ЕСЛИ(СТРОКА(A2)>ДАТА(ГОД($A$1);МЕСЯЦ($A$1)+$B$1;ДЕНЬ($A$1)-1);"";A1+1)
Если показывать только даты помесячно:
ЕСЛИ(СТРОКА(A2)>$B$1;0;ДАТА(ГОД($A$1);МЕСЯЦ($A$1)+СТРОКА(A1);ДЕНЬ($A$1)))
Для уменьшения вычислений определение последней даты лучше вывести в отдельню ячейку и в формулах ссылаться на нее. Вариант:
=КОНМЕСЯЦА(A1;B1-1)+ДЕНЬ(A1)-1 =ДАТАМЕС($A$1;СТРОКА(A1))
Макросом.
Исходные: A1 — начальная дата, В1 — длительность проекта в месяцах.
Диапазон вставки: столбец Е — порядковый номер, столбец F — дата.
Формируется список дат с шагом 1 месяц:
Sub PeriodDats() Dim ArrDate() Dim dStart As Date Dim lPer As Long, i As Long With ActiveSheet dStart = .Cells(1, 1).Value ' начальная дата lPer = .Cells(1, 2).Value ' период в месяцах If dStart = 0 Or lPer < 1 Then Exit Sub ' нет исходных данных, выход dStart = DateAdd("m", -1, dStart) ' первая дата будет dStart+месяц ReDim ArrDate(1 To lPer, 1 To 2) ' задаем размерность массива For i = 1 To lPer ' в цикле заполняем массив ArrDate(i, 1) = DateAdd("m", i, dStart) Next i .Columns("E:F").ClearContents ' очищаем столбцы .Cells(1, 5).Resize(lPer, 2).Value = ArrDate ' даты на лист End With MsgBox "Полный порядок", 64, "ФОРМИРОВАНИЕ ПЕРИОДА" End Sub
Глава 12. Выборка из диапазона дат с помощью критерия в ином формате
Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.
Предыдущая глава Оглавление Следующая глава
При создании формул массива, операторы массива могут значительно увеличить время расчета. В этой короткой главе рассматриваются два примера, в которых обычная формула справляется с задачей значительно быстрее формулы массива.
Подсчет дат, когда критерий сформулирован в виде текста. На рис. 12.1 показан набор данных с датами в стандартном формате Excel, то есть в виде порядковых чисел. В тоже время, критерии заданы как число (год) и текст (месяц). Цель – подсчитать, сколько дат соответствуют критерию. Проблема в том, что у нас несоответствие формата данных: в столбце A даты как порядковые номера, а критерий – смесь чисел и текста. На рис. 12.1 приведено пять различных формул, которые можно использовать для достижения цели.
Рис. 12.1. Подсчет количества дат (заданных порядковыми номерами) по двум критериям: году (число) и месяцу (текст)
Скачать заметку в формате Word или pdf, примеры в формате Excel2013
Давайте подробнее изучим работу этих пяти формул.
Формула :
- Если вы можете позволить себе вспомогательный столбец, функция СЧЁТЕСЛИ будет самым простым решением.
- Функция МЕСЯЦ возвращает число между 1 и 12, а функция ГОД – число (год).
- Хотя Excel требует, чтобы аргумент функции МЕСЯЦ был представлен датой в числовом формате, этот аргумент может распознать и текст. Однако МЕСЯЦ(Окт) вернет ощибку, а вот если добавить к названию месяца любое число, например, 1, то Excel справится. Используйте, как в формуле выражение Окт1, заданное фрагментом F8&1, или 1Окт, заданное фрагментом 1&F8.
- Формулы с вспомогательными столбцами как правило работают быстрее.
Формула :
- Если у вас Excel 2007 или более поздний, вы можете использовать функции СЧЁТЕСЛИМН и КОНМЕСЯЦА.
- Вам даны год (в виде числа) и месяц (как текст). Это означает, что вы можете вычислить дату начала и конца месяца, а затем определить даты, попажающие между ними.
- Месяц всегда начинается с первого числа, так что вы можете создать нижнюю границу диапазона конкатенацией:
"
>=1"
&F8&E8. Операции конкатенации возвращают текст, но это не страшно, т.к. функция СУММЕСЛИМН понимает даты в виде текста. - Вы используете функцию КОНМЕСЯЦА с аргументом число_месяцев равным нулю; это позволяет получить последнюю дату текущего месяца. Функция КОНМЕСЯЦА является динамической: она возвращает 28 или 29 для февраля и 30 или 31 для любого другого месяца.
- Эта формула является самой быстрой, если вам нужно получить решение в одной ячейке.
Формула :
- Если у вас Excel версии младше 2007 г., вы можете использовать две функции СЧЁТЕСЛИ, одну – для верхнего диапазона, вторую – для нижнего. Фокус в том, чтобы сначала сосчитать все значения, которые равны или меньше верхней границы, а затем вычесть все значения, которые меньше нижней границы.
- В Excel 2003 или более ранней, чтобы добавить функцию КОНМЕСЯЦА, вам нужно выбрать Инструменты → Надстройки → Анализ Данных.
- Эта формула работает быстрее, чем формулы и .
Формула :
- Функции МЕСЯЦ и ГОД возвращают числа, извлекая их из порядкового номера даты.
- Далее сравниваются два фрагмента, каждый полкченный конкатенацией.
Формула :
- Функция ТЕКСТ используется для представления чисел в виде текста. Второй аргумент этой функции – формат – определяет, как будет представлено число. Вы может конвертировать весь столбец А в текст, состоящий из 7 символов: 3 буквы месяца и 4 цифры года.
Нахождение объема продаж за год. На рис. 12.4 показан пример несоответствие формата года в критерии Е6 (число) и формата дат в диапазоне А2:А6 (порядковый номер). Цель – найти сумму продаж за год. На рисунке представлены шесть вариантов формул, которые могут решить задачу. Обратите внимание, что в формулах и критерии начала и конца года жестко зашиты в коде, т.к. они не могут изменяться. Это 1/1 и 31/12). Формулы размещены на рисунке в порядка увеличения скорости работы.
Рис. 12.4. Формата года в критерии Е6 (число) не соответствует формату дат в диапазоне А2:А6 (порядковый номер)
Допустим поставки товаров от поставщика 1 раз в неделю. Банковские транзакции взаиморасчетов с поставщиком товаров производятся регулярно каждый вторник. Необходимо быстро проверить в какие дни дата поставки товара совпадает с датой взаиморасчетов. Это позволит предоставить ежемесячный отчет за прошлый месяц о взаиморасчетах поставщику в день поставки товара и сэкономить на курьерских услугах. Для этого следует выделить все даты предполагаемых поставок, припадающие на вторник.
Поиск даты в диапазоне дат Excel
Для решения выше описанной задачи мы, используя специальную формулу в условном форматировании выполним поиск ближайшей даты в Excel для вторников и выделим цветом эти ячейки. Автоматическое выделения цветом календарных дат:
- Выделите диапазон ячеек B2:B10 и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило».
- Выберите: «Использовать формулу для определения форматируемых ячеек».
- Чтобы выбрать дни вторников в Excel для поля ввода введите формулу: =ДЕНЬНЕД(B2;2)=2 и нажмите на кнопку «Формат», чтобы задать желаемый цвет заливки для ячеек. Например, зеленый. Нажмите ОК на всех открытых окнах.
Результат выделения цветом каждого вторника в списке дат поставок товаров:
В формуле мы использовали функцию =ДЕНЬНЕД(), которая возвращает номер дня недели для исходной даты. В первом аргументе функции указываем ссылку на исходную дату. Ссылка относительная так как будет проверятся каждая дата в столбце B. Во втором аргументе обязательно следует указать число 2, чтобы функция правильно выдавала нам очередности дней недели (1-понедельник, 2-вторник и т.д.). Если не указать второй аргумент, то функция будет считать дни в английском формате: 1-sanday (неделя), 2-Monday (понедельник) и т.д.
Дальше идет оператор сравнения с числом 2. Если возвращаемое число функцией = 2 значит формула возвращает значение ИСТИНА и к текущей ячейке применяется пользовательский формат (красная заливка).
Выделения дат цветом только текущего месяца
В таблице представлен список проектов, которые должны быть реализованные на протяжении текущего полугодия. Список большой, но нас интересуют только те проекты, которые должны быть реализованы в текущем месяце. Визуально искать в списке даты текущего месяца – весьма неудобно. Можно использовать условное форматирование, чтобы Excel нам автоматически выделил цветом интересующие нас даты в списке. Пример таблицы проектов на текущий месяц в Excel:
Нам необходимо из целой таблицы выбрать дату в Excel на текущий месяц:
- Выделите диапазон ячеек B2:B11 и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило».
- Снова выбираем: «Использовать формулу для определения форматируемых ячеек».
- В поле ввода введите формулу: =МЕСЯЦ(B2)=МЕСЯЦ($C$2) и нажмите на кнопку «Формат», чтобы задать желаемый цвет заливки для ячеек. Например, зеленый. Нажмите ОК на всех открытых окнах.
В результате визуально отчетливо видно дни текущего месяца:
В представленной формуле для условного форматирования главную роль играет функция =МЕСЯЦ(), которая определяет номер месяца исходной даты. Ссылка на ячейку в аргументе первого раза использования функции МЕСЯЦ – относительная, так как проверятся будут несколько ячеек в столбце C. После функции стоит оператор сравнения с номером текущего месяца. Там уже используется абсолютная ссылка (значение аргумента неизменяемое). Если результаты вычислений по обе стороны оператора сравнения совпадают, тогда формула возвращает значение ИСТИНА и к текущей ячейке присваивается пользовательский формат (заливка зеленым цветом).
Теперь усложним задачу. Допустим у нас список проектов охватывает не полугодие, а несколько лет:
Тогда возникает сложность ведь в разные года номера месяцев будут совпадать и условное форматирование будет выделять лишние даты. Поэтому необходимо модернизировать формулу:
Готово:
Мы добавили в формулу две функции, которые позволяют нам выбрать дни определенного месяца и года:
- =ГОД() – функция работает по тому же принципу что и =МЕСЯЦ(). Разница только в том, что возвращает из даты номер года.
- =И() – данное имя функции говорит само за себя. То есть должны совпадать и номера месяцев и их номера годов.
Вся формула достаточно просто читается и ее легко использовать для решения похожих задач с помощью условного форматирования.
Читайте так же: как посчитать разницу между датами в днях.
Общая формула
= ТЕКСТ(дата1; «формат») & «-» & ТЕКСТ (дата2; «формат»)
Объяснение
Чтобы отобразить диапазон дат в одной ячейке на основе дат в разных ячейках, вы можете использовать формулу, основанную на функции ТЕКСТ.
В показанном примере формула в ячейке E5:
= ТЕКСТ (B5; «ммм д») & «-» & ТЕКСТ(C5; «ммм д»)
Как работает эта формула
Функция ТЕКСТ принимает числовые значения и преобразует их в текстовые значения, используя заданный вами формат. В этом примере мы используем формат «ммм д» для обеих функций TEКСT в E5. Результаты объединяются дефисом, используя простую конкатенацию.
Примечание. Другие примеры в столбце E используют разные текстовые форматы.
Дата окончания отсутствует
Если дата окончания отсутствует, формула не будет работать правильно, потому что дефис будет добавлен к дате начала (например, «1 марта»).
Чтобы обработать этот случай, вы можете обернуть конкатенацию и вторую функцию ТЕКСТ внутри ЕСЛИ следующим образом:
= ТЕКСТ(дата1; «ммм д») & ЕСЛИ(дата2 «»; «-» &ТЕКСТ(дата2; «ммм д»); «»)
Это создает полный диапазон дат, когда обе даты присутствуют, но выводит только дату начала, когда дата окончания отсутствует.
Отсутствует дата начала
Для обработки случая, когда обе даты отсутствуют, вы можете вложить еще один ЕСЛИ следующим образом:
= ЕСЛИ(дата1 «»; ТЕКСТ(дата1; «мммм д») & ЕСЛИ(дата2 «»; «-» & ТЕКСТ(дата2; «ммм д»); «»); «»)
Эта формула просто возвращает пустую строку («»), когда дата1 недоступна.