Список дат в excel в одной ячейке

Диапазон дат в одной ячейке (в текстовом формате) в MS EXCEL

​Смотрите также​GElenka​ то .файлик приложите,где​если в столбце​

​: Формула массива​ решить САМОстоятельно?!.​​Сергей​​vispateresa​Перейдите на вкладку​​ Если день недели​​ об ошибке.​.​ зеленым цветом, а​ которому ячейка будет​

​ пользователь будет вводить​=ЕСЛИ(B19=КОНМЕСЯЦА(B19;0);»Последний день месяца»;ТЕКСТ(B19;»дд»)&»-«&ТЕКСТ(B19+МИН(B20;КОНМЕСЯЦА(B19;0)-B19);»дд.ММ.гггг»))​

​ разным месяцам, то​​Выведем диапазон дат (начальная​: Добрый день!​ #ЗНАЧ​ указанны даты с​FreeWed​Логика-то вам понятна:​

​: не вижу проблем​: Вот на этом​Input Message​ не равен 1​Примечание:​На вкладке​ не красным, т.к.​ выделяться если дата​ данные;​В формуле предполагается, что​

​ у начальной даты​ — конечная дата)​Застряла на формуле​BAG​ числами дней 01.02.2014​: Еще раз Спасибо​

Диапазон с указанием месяца и года

​ если >= И​ меняйте условия по​ примере нужно посчитать​(Сообщение для ввода)​ (воскресенье) и не​Чтобы указать подсказку​Data​ правило (Между =СЕГОДНЯ()-14​ находится в пределах​вызовите инструмент Условное форматирование (Главная/​

​ начальная дата введена​ будет дополнительно выводиться​ в одной ячейке​​ Если.​​: ну вот…​ и так далее​​ всем большое​​V​

Диапазон в пределах 1 месяца

​ датам и условие​ количество да за​ или​ равен 7 (суббота),​ при вводе или​(Данные) нажмите кнопку​ и =СЕГОДНЯ()+14) у​ двух недель от​ Стили/ Условное форматирование/​ в ячейку​ месяц.​ в формате 21-25.10.2012.​Подскажите, пожалуйста, как​

​BAG​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММЕСЛИ(G:G;»01.02.2014″;AE:AE)​Извините за глупое​: вариант​​ да или нет​​ апрель 2015​Error Allert​​ дата допускается (<>​​ текст для оповещения​

excel2.ru

Информирование пользователя MS EXCEL о принадлежности ДАТЫ к определенному диапазону

​Data Validation​ нас идет первым​ сегодняшнего числа, используйте​ Управление правилами). Откроется​B19​

​Более простым случаем является​Пусть задана начальная дата​ задать диапазон дат​: Кажется разобрался, виной​- возвращает результат​

  • ​ сообщение, формула Суммпроизв​=СУММПРОИЗВ(($A$2:$A$12=$J13)*($C$2:$C$12=K$12)*$D$2:$D$12)​
  • ​если что то​Сергей​(Сообщение об ошибке),​ означает не равно).​
  • ​ об ошибке, перейдите​(Проверка данных).​ и имеет наивысший​ формулы =СЕГОДНЯ()-14 и​

​ окно Диспетчер правил​, а длительность периода введена​ вывод начальной даты​ (ячейка​ с помощью формулы​

  • ​ спец символы #​ только для указанной​ реально самая простая​
  • ​если случайно подойдет​ не то тогда​: =СЧЁТЕСЛИМН(C[-2];»нет»;C[-3];»>=»&—«01.04.2015»;C[-3];»8 прально​ чтобы прописать подсказку,​ Другими словами, понедельники,​
  • ​ на вкладку​
  • ​Из выпадающего списка​ приоритет. Для правильного​
  • ​ =СЕГОДНЯ()+14.​ условного форматирования;​
  • ​ в ячейку​
  • ​ с указанием месяца​B7​

  • ​ ЕСЛИ в нижней​китин​ даты, а постановочные​

​ в данном случае:)​ два варианта то​ реальный пример что​vispateresa​ всплывающую при вводе​ вторники, среды, четверги​

  • ​Input Message​
  • ​Allow​ отображения поменяем порядок​
  • ​ВНИМАНИЕ!​нажмите Создать правило;​
  • ​B20​ и года (что​
  • ​) и длительность периода​ таблице, что бы​

​: ога.да еще у​ символы * ?​Михаил С.​ эта формула не​ есть что хотите​: спасибо огромное! Вы​ или текст для​ и пятницы допустимы.​(Сообщение для ввода)​

​(Тип данных) выберите​
​ критериев, используя соответствующие​Когда к диапазону​выберите Форматировать только ячейки,​.​ позволяет корректно учесть​ (ячейка​ в расчете использовалась​ вас формула стоит​ не работают​: Зато и самая​ подходит.​ с указанием вручную​ очень помогли​ оповещения об ошибке.​ Воскресенья и субботы​ или​ пункт​ стрелочки.​ ячеек применяются два​ которые содержат;​Используем Условное форматирование для​ случай, когда даты​

​B8​ цена 1 или​ в том же​китин​ тормозная. Если такая​Nic70y​ результата вычисления формул​vispateresa​Урок подготовлен для Вас​ – нет. Поскольку,​Error Allert​Date​В результате получим вот​ или более правил​в выпадающем списке выберите​

​ подачи сигнала пользователю​ принадлежат разным годам).​

​), выведем диапазон дат​
​ 2 периода соответственно.​ столбце,где и считает.о​: попробуйте так​ формула всего одна​

  • ​: Формула массива​МВТ​: не углядела один​ командой сайта office-guru.ru​ прежде чем открыть​
  • ​(Сообщение об ошибке).​(Дата).​
  • ​ такую картину.​ Условного форматирования, приоритет​ Равно;​

excel2.ru

Как отбросить недопустимые даты в Excel

  • ​ MS EXCEL о принадлежности​
  • ​ В этом случае​

​ в одной ячейке​_Boroda_​ циклической ссылке не​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММПРОИЗВ((МЕСЯЦ(G:G)=2)*AE:AE)​

  1. ​ — то не​​=МИН(ЕСЛИ(K$12=$C$2:$C$12;ЕСЛИ($J13>=$A$2:$A$12;ЕСЛИ($J13 В Excel​​: Мне кажется, проще​Отбрасываем ненужные даты в Excel
  2. ​ момент ((( -​​Источник: http://www.excel-easy.com/examples/reject-invalid-dates.html​​ окно проверки данных,​​Из выпадающего списка​​Из выпадающего списка​Отбрасываем ненужные даты в Excel

Вне диапазона дат

  1. ​СОВЕТ:​​ обработки определяется порядком​​введите формулу =СЕГОДНЯ();​ даты к определенному​​ нужно использовать формулу​​ в формате 21-25.10.2012​
  2. ​: Так нужно?​​ предупреждал Эксель?​​BAG​​ страшно. Если их​​ новее 2003 можно​
  3. ​ сводной таблицей сделать​ задача должна решаться​Перевел: Антон Андронов​ мы выделили диапазон​​Allow​​Data​Отбрасываем ненужные даты в Excel​Чтобы найти все​​ их перечисления в​нажав кнопку Формат выберите,​ диапазону.​ =ТЕКСТ(B13;»дд.ММ.гггг»)&»-«&ТЕКСТ(B13+B14;»дд.ММ.гггг»)​ (см. файл примера).​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=H3*ЕСЛИ((H13>=$D14)*(H13<>=$F14)*(H13​
  4. ​BAG​​: не выходит -​​ под сотню, и​ попробовать СУММЕСЛИМН​

​ и поставить группировку​ не только для​

Отбрасываем ненужные даты в Excel

​Автор: Антон Андронов​​A2:A4​(Тип данных) выберите​(Значение) выберите пункт​ ячейки на листе,​ Диспетчере правил условного​​ например, красный шрифт;​​Предположим, что пользователь вводит​В формуле предполагается, что​​Это можно сделать с​​Уж коли нужно​

Воскресенья и субботы

  1. ​: тоталитарная лажа, в​​ ошибочка #ЗНАЧ!​​ диапазоны большие -​FreeWed​​ по годам и​​ 2015 года, а​
  2. ​vispateresa​​, Excel автоматически вставил​​ пункт​​Between​ к которым применены​ форматирования. Правило, расположенное​​нажмите ОК и вернитесь​​ некие даты событий.​

    ​ начальная дата введена​
    ​ помощью формулы =ТЕКСТ(B7;"дд")&"-"&ТЕКСТ(B7+B8;"дд.ММ.гггг")​

    Отбрасываем ненужные даты в Excel

    ​GElenka​​ оригинале файла какой​​jakim​​ то почувствуете.​: Спасибо большое за​ месяцам (см. в​ также для предыдущих​: Используется формула СЧЁТЕСЛИМН​ формулу во все​Custom​(Между).​ правила Условного форматирования необходимо:​ в списке выше,​ в Диспетчер правил​ Требуется, чтобы EXCEL​ в ячейку​Совет​:​ то глюк, буду​:​FreeWed​​ помощь,​​ примере)​ и последующих​ с двумя условиями.​

  3. ​ ячейки этого диапазона.​(Другой).​​Введите начальную и конечную​​на вкладке Главная в​​ имеет более высокий​​ условного форматирования;​Отбрасываем ненужные даты в Excel​ автоматически выделял ячейки​B13​: О пользовательском формате​
  4. ​ура, все работает!​ разбираться.​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=SUMPRODUCT((MONTH(A:A)=2)*B:B)​​:​​Я Самостоятельно пробовал,​

​FreeWed​Сергей​

Отбрасываем ненужные даты в Excel

​По одному из​​Чтобы проверить это, выделите​​В поле​​ дату, как показано​ группе Редактирование щелкните​​ приоритет, чем правило,​​Теперь создадим правило, по​ следующим образом:​, а длительность периода введена​ дат можно прочитать​Спасибо большое​

​Получается так что​китин​
​Михаил С.,​
​ давно уже ничего​

​: Добрый день, Уважаемые​

office-guru.ru

Как в условие формулы подставить диапазон дат?

​: в моем примере​​ условий необходимо из​ ячейку​
​F​ на рисунке ниже,​ стрелку рядом с​ расположенное в списке​ которому ячейка будет​красным, если дата совпадает​ в ячейку​ в статье Пользовательский​
​reventon9​ формулы нельзя расположить​: не верю.©​

​Михаил подскажите пожалуйста,​​ не делал в​Прошу помощи в​ последняя формула считает​ столбца с конкретными​A3​

​ormula​​ и нажмите​ командой Найти и​ ниже. Новые правила​ выделяться, если дата​

​ с сегодняшним днем;​​B14​

​ формат ДАТЫ и​​: Описание внутри​ в одном столбце​

​jakim​​ в конструкции той​ Экселе вот и​ решении простенькой задачки.​ апрель не зависимо​ датами выбирать ячейки,​и нажмите кнопку​(Формула) пропишите формулу,​

​ОК​​ выделить;​ всегда добавляются в​ находится в пределах​оранжевым, если вводимая дата​
​.​ ВРЕМЕНИ в MS​

​По сути вопрос​​ с расчетными цифрами,​: Опоздал. BAG проверьте​ формулы, которую вы​ отказывается мозг работать.​ Есть таблица в​ от года​
​ относящиеся к определенному​Data Validation​ показанную ниже, и​.​

​выберите в списке пункт​​ начало списка и​ 1 недели от​ находится в пределах​Иногда требуется, чтобы начальная​
​ EXCEL​ сводится к поиску​даты должны начинаться​ формат столбца G.​ написали, я раньше​ Тоже думал про​

​ которой указаны в​​пс не задавайте​ месяцу и году.​(Проверка данных).​ нажмите​Пояснение:​ Условное форматирование;​

planetaexcel.ru

Выбор значение из диапазона между датами

​ поэтому обладают более​​ сегодняшнего числа:​
​ 1 недели от​ и конечная даты​Это решение, однако, не​ определенной даты в​ с самого верха​BAG​ такого ПОИСКПОЗ($J13;ЕСЛИ($C$2:$C$12=K$12;$A$2:$A$12))) не​ Суммпроизв — но​ каком промежутке действовал​ диапазон полность столбцом​ Например, февраль 2014​Как видно на рисунке,​
​ОК​

​Даты между 20​​будут выделены все ячейки,​ высоким приоритетом, однако​нажмите Создать правило;​
​ сегодняшнего числа;​ принадлежали одному месяцу.​

​ учитывает, что начальная​​ диапазоне, и проставление​
​ листа, и ячейки​
​: Специально заново отформатировал​ встречал, а именно​ правильно ее так​ определенный тариф. Необходимо​

​vispateresa​​ или апрель 2015.​
​ эта ячейка тоже​.​ мая 2013 года​

​ которым применены правила​​ порядок правил можно​выберите Форматировать только ячейки,​
​зеленым, если вводимая дата​ В этом случае​ и конечная дата​ в этом диапазоне​ не должны содержать​ столбец G как​ формула ЕСЛИ в​ и не дописал.​ заполнить значения в​
​: Столбец дат может​Как задать в​ содержит формулу.​=AND(WEEKDAY(A2)<>1,WEEKDAY(A2)<>7)​ и сегодняшней датой​ Условного форматирования.​ изменить в диалоговом​ которые содержат;​

​ находится в пределах​​ в формуле необходимо​

​ могут принадлежать разным​​ соответствующих значений.​ ни чего кроме​
​ даты , но​ ПОИСКПОЗ.​Спасибо большое за​ желтых ячейках, то​

​ быть абсолютно в​​ формуле такой диапазон​Введите дату 24 августа​=И(ДЕНЬНЕД(A2)<>1;ДЕНЬНЕД(A2)<>7)​ + 5 дней​Вне диапазона дат​ окне при помощи​в выпадающем списке выберите​ 2 недель от​

​ провести проверку: не​​ месяцам. В этом​​Заранее спасибо​
​ цифр,​ результат тот же.​Считает правильно, а​ помощь, на данном​ есть в какой​ разнобой. Нужна формула,​ дат?​ 2013 (суббота) в​
​Пояснение:​ допустимы. Даты вне​

​Воскресенья и субботы​​ кнопок со стрелками​

planetaexcel.ru

как в формуле указать диапазон дат для конкретного месяца? (Формулы)

​ Между;​​ сегодняшнего числа.​ выходит ли конечная​ случае формула может​
​китин​иначе ошибка формулы​что может влиять​ понять не могу!​
​ форуме уже давно,​​ диапазон попадает дата,​ которая будет считать​Сергей​ ячейку​Функция​

​ этого диапазона недопустимы.​​Этот пример объясняет, как​​ Вверх и Вниз.​

​введите формулы =СЕГОДНЯ()-7 и​​Сначала создадим правило, по​ дата за границы​

​ вернуть, например 21-05.10.2012,​​: И вам здравствуйте​​ .​

​ на это, объединение​​Михаил С.​

​ но из за​​ тот тариф и​ количество для конкретного​

​: если б показали​​A2​WEEKDAY​Введите в ячейку​ использовать проверку данных,​
​Если мы расположим правила​ =СЕГОДНЯ()+7;​ которому ячейка будет​ месяца. Если конечная​ что довольно сложно​

​ .чисто по вашему​​От этого страдает​ ячеек в шапке,​: Пояснения в файле​

​ смены платформы мой​​ необходимо брать.​

​ месяца конкретного года.​​ пример можно было​.​

​(ДЕНЬНЕД) возвращает число​​А2​ чтобы отбросить недопустимые​ как показано на​нажав кнопку Формат выберите,​ выделяться, если дата​ дата выходит за​

​ для понимания. Поэтому,​​ файлу примерно так​ шапка файла с​ группировка строк или​BAG​
​ логин отказался работать,​Заранее всем спасибо.​Например, количество «нет»​ сказать точно а​
​Результат: Excel выдаёт сообщение​ от 1 (воскресенье)​дату – 19​ даты.​ предыдущем рисунке, то​ например, оранжевый шрифт;​
​ совпадает с сегодняшним​ границы месяца, то​
​ изменим формулу: =ТЕКСТ(B7;ЕСЛИ(МЕСЯЦ(B7)-МЕСЯЦ(B7+B8);»дд.ММ»;»дд»))&»-«&ТЕКСТ(B7+B8;»дд.ММ.гггг»)​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(И($AL$3<>=$G$2:$AK$2);$E$3/(($AM$3-$AL$3)+1);»»)​ описанием столбцов, досадно,​ фильтрация !?​
​: Подскажите как указать​

excelworld.ru

Как задать диапазон дат формулой ЕСЛИ (Формулы/Formulas)

​ пришлось еще раз​​Z​
​ для апреля 2015​ так пишите в​
​ об ошибке.​ до 7 (суббота),​ мая 2013 года.​Выделите диапазон​ при вводе сегодняшней​Проделайте аналогичные шаги для​ днем (см.Файл примера):​ она заменяется последней​

​Теперь. если начальная и​​reventon9​
​ но ладно.​
​китин​

​ диапазон дат для​​ регистрироваться.​yahoo​: И ни одной​
​ или количество "да"​

excelworld.ru

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

​ условиях >=дата​​Примечание:​
​ представляющее день недели.​Результат: Excel выдаёт сообщение​A2:A4​ даты она выделится​ создания правила, по​выделите диапазон, в который​
​ датой месяца.​

​ конечная даты принадлежат​​: Спасибо за оперативность!!!​Спасибо за помощь​: а чё гадать​​ конкретного месяца 02.2014,​

​Михаил С.​​ вашей попытки ее​

excelworld.ru

​ для марта 2014​


Выведем диапазон дат (начальная — конечная дата) в одной ячейке в формате 21-25.10.2012.

Пусть задана начальная дата (ячейка

B7

) и длительность периода (ячейка

B8

), выведем диапазон дат в одной ячейке в формате 21-25.10.2012 (см.

файл примера

).

Это можно сделать с помощью формулы =

ТЕКСТ(B7;»дд»)&»-«&ТЕКСТ(B7+B8;»дд.ММ.гггг»)


Совет

: О пользовательском формате дат можно прочитать в статье

Пользовательский формат ДАТЫ и ВРЕМЕНИ в MS EXCEL

Это решение, однако, не учитывает, что начальная и конечная дата могут принадлежать разным месяцам. В этом случае формула может вернуть, например 21-05.10.2012, что довольно сложно для понимания. Поэтому, изменим формулу:

=ТЕКСТ(B7;ЕСЛИ(МЕСЯЦ(B7)-МЕСЯЦ(B7+B8);»дд.ММ»;»дд»))&»-«&ТЕКСТ(B7+B8;»дд.ММ.гггг»)

Теперь. если начальная и конечная даты принадлежат разным месяцам, то у начальной даты будет дополнительно выводиться месяц.

Диапазон с указанием месяца и года

Более простым случаем является вывод начальной даты с указанием месяца и года (что позволяет корректно учесть случай, когда даты принадлежат разным годам). В этом случае нужно использовать формулу =

ТЕКСТ(B13;»дд.ММ.гггг»)&»-«&ТЕКСТ(B13+B14;»дд.ММ.гггг»)

В формуле предполагается, что начальная дата введена в ячейку

B13

, а длительность периода введена в ячейку

B14

.

Диапазон в пределах 1 месяца

Иногда требуется, чтобы начальная и конечная даты принадлежали одному месяцу. В этом случае в формуле необходимо провести проверку: не выходит ли конечная дата за границы месяца. Если конечная дата выходит за границы месяца, то она заменяется последней датой месяца.

=

ЕСЛИ(B19=КОНМЕСЯЦА(B19;0);»Последний день месяца»;ТЕКСТ(B19;»дд»)&»-«&ТЕКСТ(B19+МИН(B20;КОНМЕСЯЦА(B19;0)-B19);»дд.ММ.гггг»))

В формуле предполагается, что начальная дата введена в ячейку

B19

, а длительность периода введена в ячейку

B20

.

Создание списка последовательных дат

Вы можете быстро создать список дат в последовательном порядке с помощью маркера заполнения Маркер заполнения или команды Заполнить.

Браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

Использование маркера заполнения

  1. Выделите ячейку, содержащую первую дату. Перетащите маркер заполнения по смежным ячейкам, которые нужно заполнить последовательными датами.

  2. Щелкните в нижнем правом углу ячейки маркер заполнения  Маркер заполнения и, удерживая, перетащите его, чтобы заполнить остальные ячейки в ряду. Маркер заполнения можно перетаскивать вверх, вниз и по горизонтали в пределах листа.

  3. Создание списка последовательных дат с помощью маркера заполнения

Использование команды «Заполнить»

  1. Выделите ячейку с первой датой. Затем выделите диапазон ячеек, которые нужно заполнить.

  2. Выберите Заполнить > Прогрессия > Единицы. Выберите нужную единицу.

Совет: Даты можно сортировать так же, как любые другие данные. По умолчанию даты сортируются от самой ранней до самой поздней.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Автоматическое заполнение ячеек листа данными

Использование функций автозаполнения и мгновенного заполнения

Нужна дополнительная помощь?

Download PC Repair Tool to quickly find & fix Windows errors automatically

Imagine a situation in which you need to create a date-wise table. For example, you are creating a schedule where you need to mention a date-wise list of activities. In such a case, you would need a list of dates. Obviously, no list is unlimited, so your list would have a starting and ending date.

For such cases, you could use the method explained in this article to obtain the list of dates between two dates as a list in a column. You have two ways of proceeding:

  1. Create a list of sequential dates in Excel using the Fill handle
  2. Obtain a list of all dates between two given dates in Excel using formula.

1] Create a list of sequential dates in Excel using the Fill handle

Create a list of sequential dates in Excel using the Fill handle

Microsoft Excel has a Fill handle, which makes it easy to create a list of sequential dates. While it doesn’t exactly help with dates between two given dates, using this option is much easier than using the formula.

Simply Enter the date in say cell A1 and click anywhere outside the cell. Then click on the cell again to activate the Fill handle.

Pull the Fill handle down to create a list of sequential dates in Excel.

Obtain a list of all dates between two given dates in Excel using formula

The formula to obtain a list of all dates between two given dates in Excel is a little complicated. We will explain it using an example:

Let us suppose the starting date is mentioned in cell A1, and the ending date is mentioned in cell A2. You need to obtain the list in column C. The procedure for finding the list of dates would be as follows:

First, enter the formula and press Enter:

=A1+1 in cell C1

It will display the date next to the starting date in cell C1.

List all dates between two dates in Excel

Now, type the following date in cell C2:

=IF($A$1+ROW(A1)>=$A$2-1,"",C1+1)

Enter the formula in C1

Click anywhere outside cell C2 and then back on C2 to highlight the option to pull the formula down. Pull the formula down till you start getting blank results on the cells. Hit Enter to display the results.

End result

The problem with this formula is that it would be hard to define the syntax or modify it. Furthermore, the dates aren’t exactly in order. The first and last dates remain in cells A1 and A2. The dates in column C are the ones between these dates.

The resolution to this problem could involve a bit of dragging, cutting, and pasting.

Hope this helps.

Ezoic

Karan is a B.Tech, with several years of experience as an IT Analyst. He is a passionate Windows user who loves troubleshooting problems and writing about Microsoft technologies.

Содержание

  • 1 Глава 12. Выборка из диапазона дат с помощью критерия в ином формате
  • 2 Поиск даты в диапазоне дат Excel
  • 3 Выделения дат цветом только текущего месяца
  • 4 Общая формула
  • 5 Объяснение
  • 6 Как работает эта формула
  • 7 Дата окончания отсутствует
  • 8 Отсутствует дата начала

Формулами.

Исходные: 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 для вторников и выделим цветом эти ячейки. Автоматическое выделения цветом календарных дат:

  1. Выделите диапазон ячеек B2:B10 и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило».
  2. Выберите: «Использовать формулу для определения форматируемых ячеек».
  3. Чтобы выбрать дни вторников в Excel для поля ввода введите формулу: =ДЕНЬНЕД(B2;2)=2 и нажмите на кнопку «Формат», чтобы задать желаемый цвет заливки для ячеек. Например, зеленый. Нажмите ОК на всех открытых окнах.

Результат выделения цветом каждого вторника в списке дат поставок товаров:

В формуле мы использовали функцию =ДЕНЬНЕД(), которая возвращает номер дня недели для исходной даты. В первом аргументе функции указываем ссылку на исходную дату. Ссылка относительная так как будет проверятся каждая дата в столбце B. Во втором аргументе обязательно следует указать число 2, чтобы функция правильно выдавала нам очередности дней недели (1-понедельник, 2-вторник и т.д.). Если не указать второй аргумент, то функция будет считать дни в английском формате: 1-sanday (неделя), 2-Monday (понедельник) и т.д.

Дальше идет оператор сравнения с числом 2. Если возвращаемое число функцией = 2 значит формула возвращает значение ИСТИНА и к текущей ячейке применяется пользовательский формат (красная заливка).

Выделения дат цветом только текущего месяца

В таблице представлен список проектов, которые должны быть реализованные на протяжении текущего полугодия. Список большой, но нас интересуют только те проекты, которые должны быть реализованы в текущем месяце. Визуально искать в списке даты текущего месяца – весьма неудобно. Можно использовать условное форматирование, чтобы Excel нам автоматически выделил цветом интересующие нас даты в списке. Пример таблицы проектов на текущий месяц в Excel:

Нам необходимо из целой таблицы выбрать дату в Excel на текущий месяц:

  1. Выделите диапазон ячеек B2:B11 и выберите инструмент: «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило».
  2. Снова выбираем: «Использовать формулу для определения форматируемых ячеек».
  3. В поле ввода введите формулу: =МЕСЯЦ(B2)=МЕСЯЦ($C$2) и нажмите на кнопку «Формат», чтобы задать желаемый цвет заливки для ячеек. Например, зеленый. Нажмите ОК на всех открытых окнах.

В результате визуально отчетливо видно дни текущего месяца:

В представленной формуле для условного форматирования главную роль играет функция =МЕСЯЦ(), которая определяет номер месяца исходной даты. Ссылка на ячейку в аргументе первого раза использования функции МЕСЯЦ – относительная, так как проверятся будут несколько ячеек в столбце C. После функции стоит оператор сравнения с номером текущего месяца. Там уже используется абсолютная ссылка (значение аргумента неизменяемое). Если результаты вычислений по обе стороны оператора сравнения совпадают, тогда формула возвращает значение ИСТИНА и к текущей ячейке присваивается пользовательский формат (заливка зеленым цветом).

Теперь усложним задачу. Допустим у нас список проектов охватывает не полугодие, а несколько лет:

Тогда возникает сложность ведь в разные года номера месяцев будут совпадать и условное форматирование будет выделять лишние даты. Поэтому необходимо модернизировать формулу:

Готово:

Мы добавили в формулу две функции, которые позволяют нам выбрать дни определенного месяца и года:

  1. =ГОД() – функция работает по тому же принципу что и =МЕСЯЦ(). Разница только в том, что возвращает из даты номер года.
  2. =И() – данное имя функции говорит само за себя. То есть должны совпадать и номера месяцев и их номера годов.

Вся формула достаточно просто читается и ее легко использовать для решения похожих задач с помощью условного форматирования.

Читайте так же: как посчитать разницу между датами в днях.

Общая формула

= ТЕКСТ(дата1; «формат») & «-» & ТЕКСТ (дата2; «формат»)

Объяснение

Чтобы отобразить диапазон дат в одной ячейке на основе дат в разных ячейках, вы можете использовать формулу, основанную на функции ТЕКСТ.

В показанном примере формула в ячейке E5:

= ТЕКСТ (B5; «ммм д») & «-» & ТЕКСТ(C5; «ммм д»)

Как работает эта формула

Функция ТЕКСТ принимает числовые значения и преобразует их в текстовые значения, используя заданный вами формат. В этом примере мы используем формат «ммм д» для обеих функций TEКСT в E5. Результаты объединяются дефисом, используя простую конкатенацию.

Примечание. Другие примеры в столбце E используют разные текстовые форматы.

Дата окончания отсутствует

Если дата окончания отсутствует, формула не будет работать правильно, потому что дефис будет добавлен к дате начала (например, «1 марта»).

Чтобы обработать этот случай, вы можете обернуть конкатенацию и вторую функцию ТЕКСТ внутри ЕСЛИ следующим образом:

= ТЕКСТ(дата1; «ммм д») & ЕСЛИ(дата2 «»; «-» &ТЕКСТ(дата2; «ммм д»); «»)

Это создает полный диапазон дат, когда обе даты присутствуют, но выводит только дату начала, когда дата окончания отсутствует.

Отсутствует дата начала

Для обработки случая, когда обе даты отсутствуют, вы можете вложить еще один ЕСЛИ следующим образом:

= ЕСЛИ(дата1 «»; ТЕКСТ(дата1; «мммм д») & ЕСЛИ(дата2 «»; «-» & ТЕКСТ(дата2; «ммм д»); «»); «»)

Эта формула просто возвращает пустую строку («»), когда дата1 недоступна.

Видео

Как обычно, кому надо быстро — смотрим видео. Подробности и нюансы — в тексте ниже:

Как вводить даты и время в Excel

Если иметь ввиду российские региональные настройки, то Excel позволяет вводить дату очень разными способами — и понимает их все:

   «Классическая» форма

  3.10.2006

   Сокращенная форма

3.10.06

   С использованием дефисов

3-10-6

   С использованием дроби

   3/10/6

Внешний вид (отображение) даты в ячейке может быть очень разным (с годом или без, месяц числом или словом и т.д.) и задается через контекстное меню — правой кнопкой мыши по ячейке и далее Формат ячеек (Format Cells):

date1.png

Время вводится в ячейки с использованием двоеточия. Например

16:45

По желанию можно дополнительно уточнить количество секунд — вводя их также через двоеточие:

16:45:30

И, наконец, никто не запрещает указывать дату и время сразу вместе через пробел, то есть 

27.10.2012 16:45

Быстрый ввод дат и времени

Для ввода сегодняшней даты в текущую ячейку можно воспользоваться сочетанием клавиш Ctrl + Ж (или CTRL+SHIFT+4 если у вас другой системный язык по умолчанию).

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

date2.png

Если Вам часто приходится вводить различные даты в ячейки листа, то гораздо удобнее это делать с помощью всплывающего календаря:

datepicker.jpg

Если нужно, чтобы в ячейке всегда была актуальная сегодняшняя дата — лучше воспользоваться функцией СЕГОДНЯ (TODAY):

date3.png

Как Excel на самом деле хранит и обрабатывает даты и время

Если выделить ячейку с датой и установить для нее Общий формат (правой кнопкой по ячейке Формат ячеек — вкладка ЧислоОбщий), то можно увидеть интересную картинку:

date4.png

То есть, с точки зрения Excel, 27.10.2012 15:42 = 41209,65417

На самом деле любую дату Excel хранит и обрабатывает именно так — как число с целой и дробной частью. Целая часть числа (41209) — это количество дней, прошедших с 1 января 1900 года (взято за точку отсчета) до текущей даты. А дробная часть (0,65417), соответственно, доля от суток (1сутки = 1,0)

Из всех этих фактов следуют два чисто практических вывода:

  • Во-первых, Excel не умеет работать (без дополнительных настроек) с датами ранее 1 января 1900 года. Но это мы переживем!  ;)
  • Во-вторых, с датами и временем в Excel возможно выполнять любые математические операции. Именно потому, что на самом деле они — числа! А вот это уже раскрывает перед пользователем массу возможностей.

Количество дней между двумя датами

Считается простым вычитанием — из конечной даты вычитаем начальную и переводим результат в Общий (General) числовой формат, чтобы показать разницу в днях:

date5.png

Количество рабочих дней между двумя датами

Здесь ситуация чуть сложнее. Необходимо не учитывать субботы с воскресеньями и праздники. Для такого расчета лучше воспользоваться функцией ЧИСТРАБДНИ (NETWORKDAYS) из категории Дата и время. В качестве аргументов этой функции необходимо указать начальную и конечную даты и ячейки с датами выходных (государственных праздников, больничных дней, отпусков, отгулов и т.д.):

date6.png

Примечание: Эта функция появилась в стандартном наборе функций Excel начиная с 2007 версии. В более древних версиях сначала необходимо подключить надстройку Пакета анализа. Для этого идем в меню Сервис — Надстройки (Tools — Add-Ins) и ставим галочку напротив Пакет анализа (Analisys Toolpak). После этого в Мастере функций в категории Дата и время появится необходимая нам функция ЧИСТРАБДНИ (NETWORKDAYS).

Количество полных лет, месяцев и дней между датами. Возраст в годах. Стаж.

Про то, как это правильно вычислять, лучше почитать тут.

Сдвиг даты на заданное количество дней

Поскольку одни сутки в системе отсчета даты Excel принимаются за единицу (см.выше), то для вычисления даты, отстоящей от заданной на, допустим, 20 дней, достаточно прибавить к дате это число.

Сдвиг даты на заданное количество рабочих дней

Эту операцию осуществляет функция РАБДЕНЬ (WORKDAY). Она позволяет вычислить дату, отстоящую вперед или назад относительно начальной даты на нужное количество рабочих дней (с учетом выходных суббот и воскресений и государственных праздинков). Использование этой функции полностью аналогично применению функции ЧИСТРАБДНИ (NETWORKDAYS) описанной выше.

Вычисление дня недели

Вас не в понедельник родили? Нет? Уверены? Можно легко проверить при помощи функции ДЕНЬНЕД (WEEKDAY) из категории Дата и время.

date7.png

Первый аргумент этой функции — ячейка с датой, второй — тип отсчета дней недели (самый удобный — 2).  

Вычисление временных интервалов

Поскольку время в Excel, как было сказано выше, такое же число, как дата, но только дробная его часть, то с временем также возможны любые математические операции, как и с датой — сложение, вычитание и т.д.

Нюанс здесь только один. Если при сложении нескольких временных интервалов сумма получилась больше 24 часов, то Excel обнулит ее и начнет суммировать опять с нуля. Чтобы этого не происходило, нужно применить к итоговой ячейке формат 37:30:55:

date8.png

Ссылки по теме

  • Как вычислять возраст (стаж) в полных годах-месяцах-днях
  • Как сделать выпадающий календарь для быстрого ввода любой даты в любую ячейку.
  • Автоматическое добавление текущей даты в ячейку при вводе данных.
  • Как вычислить дату второго воскресенья февраля 2007 года и т.п.

Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.

Предыдущая глава                             Оглавление                                Следующая глава

При создании формул массива, операторы массива могут значительно увеличить время расчета. В этой короткой главе рассматриваются два примера, в которых обычная формула справляется с задачей значительно быстрее формулы массива.

Подсчет дат, когда критерий сформулирован в виде текста. На рис. 12.1 показан набор данных с датами в стандартном формате Excel, то есть в виде порядковых чисел. В тоже время, критерии заданы как число (год) и текст (месяц). Цель – подсчитать, сколько дат соответствуют критерию. Проблема в том, что у нас несоответствие формата данных: в столбце A даты как порядковые номера, а критерий – смесь чисел и текста. На рис. 12.1 приведено пять различных формул, которые можно использовать для достижения цели.

Рис. 12.1. Подсчет количества дат

Рис. 12.1. Подсчет количества дат (заданных порядковыми номерами) по двум критериям: году (число) и месяцу (текст)

Скачать заметку в формате Word или pdf, примеры в формате Excel2013

Давайте подробнее изучим работу этих пяти формул.

Формула [1]:

  • Если вы можете позволить себе вспомогательный столбец, функция СЧЁТЕСЛИ будет самым простым решением.
  • Функция МЕСЯЦ возвращает число между 1 и 12, а функция ГОД – число (год).
  • Хотя Excel требует, чтобы аргумент функции МЕСЯЦ был представлен датой в числовом формате, этот аргумент может распознать и текст. Однако МЕСЯЦ(Окт) вернет ощибку, а вот если добавить к названию месяца любое число, например, 1, то Excel справится. Используйте, как в формуле выражение Окт1, заданное фрагментом F8&1, или 1Окт, заданное фрагментом 1&F8.
  • Формулы с вспомогательными столбцами как правило работают быстрее.

Формула [2]:

  • Если у вас Excel 2007 или более поздний, вы можете использовать функции СЧЁТЕСЛИМН и КОНМЕСЯЦА.
  • Вам даны год (в виде числа) и месяц (как текст). Это означает, что вы можете вычислить дату начала и конца месяца, а затем определить даты, попажающие между ними.
  • Месяц всегда начинается с первого числа, так что вы можете создать нижнюю границу диапазона конкатенацией: ">=1"&F8&E8. Операции конкатенации возвращают текст, но это не страшно, т.к. функция СУММЕСЛИМН понимает даты в виде текста.
  • Вы используете функцию КОНМЕСЯЦА с аргументом число_месяцев равным нулю; это позволяет получить последнюю дату текущего месяца. Функция КОНМЕСЯЦА является динамической: она возвращает 28 или 29 для февраля и 30 или 31 для любого другого месяца.
  • Эта формула является самой быстрой, если вам нужно получить решение в одной ячейке.

Формула [3]:

  • Если у вас Excel версии младше 2007 г., вы можете использовать две функции СЧЁТЕСЛИ, одну – для верхнего диапазона, вторую – для нижнего. Фокус в том, чтобы сначала сосчитать все значения, которые равны или меньше верхней границы, а затем вычесть все значения, которые меньше нижней границы.
  • В Excel 2003 или более ранней, чтобы добавить функцию КОНМЕСЯЦА, вам нужно выбрать ИнструментыНадстройкиАнализ Данных.
  • Эта формула работает быстрее, чем формулы [4] и [5].

Формула [4]:

  • Функции МЕСЯЦ и ГОД возвращают числа, извлекая их из порядкового номера даты.
  • Далее сравниваются два фрагмента, каждый полкченный конкатенацией.

Формула [5]:

  • Функция ТЕКСТ используется для представления чисел в виде текста. Второй аргумент этой функции – формат – определяет, как будет представлено число. Вы может конвертировать весь столбец А в текст, состоящий из 7 символов: 3 буквы месяца и  4 цифры года.

Нахождение объема продаж за год. На рис. 12.4 показан пример несоответствие формата года в критерии Е6 (число) и формата дат в диапазоне А2:А6 (порядковый номер). Цель – найти сумму продаж за год. На рисунке представлены шесть вариантов формул, которые могут решить задачу. Обратите внимание, что в формулах [1] и [2] критерии начала и конца года жестко зашиты в коде, т.к. они не могут изменяться. Это 1/1 и 31/12). Формулы размещены на рисунке в порядка увеличения скорости работы.

Рис. 12.4. Формата года в критерии не соответствует формату дат

Рис. 12.4. Формата года в критерии Е6 (число) не соответствует формату дат в диапазоне А2:А6 (порядковый номер)

Хитрости »

18 Октябрь 2021              6882 просмотров


Создать список дат(месяцев, кварталов, лет) на основании даты начала и окончания периода

Скачать файл, используемый в видеоуроке:

  Список дат при помощи Power Query.xlsx (72,7 KiB, 407 скачиваний)


Представим ситуацию, что у нас есть таблица следующего вида:
Исходная таблица
В ней перечислены клиенты, которые подписались на наш продукт(условно клиент А и клиент В). В качестве дат указаны дата начала подписки и дата окончания. И нам необходимо построить что-то вроде диаграммы Ганта, на которой будет видно в хронологическом порядке активность клиентов
Результат - Диаграмма Ганта по каждому клиенту
Т.е. по сути нам нужно создать даты из двух таким образом, чтобы на каждый день подписки была одна дата. Например, для клиента «А» с подпиской на журнал «За рулем» у нас должно получиться 115 строк дат, т.к. подписка длилась 115 дней(от 05.10.2020 до 27.01.2021). Проблема в том, что встроенных средств создания списка дат между двумя заданными датами в Power Query нет. Поэтому придется что-то изобретать.
Загружаем данные нашей таблицы в редактор Power Query: выделяем таблицу -вкладка Данные(Data)(или Power Query) —Получить и преобразовать данные(Get & Transform Data)Из таблицы(From Table/Range).
После того как загрузили таблицу в Power Query следует убедиться, что тип данных в столбцах «Дата подписки» и «Дата отказа» именно дата, а не дата и время или тем более не тип любой или текст. Для этого на каждом столбце щелкаем левой кнопкой мыши по значку слева от заголовка и выбираем «Дата»

(Date)

Сменить тип на дату
Или выделяем сразу оба столбца с датами -вкладка Главная(Home) -группа Преобразование(Transform) -раскрываем список Тип данных(Data type) и выбираем Дата(Data).
Далее, чтобы получить список дат для каждого клиента от одной даты до другой, необходимо использоваться функцию List. Идем на вкладку Добавление столбца(Add Column)Настраиваемый столбец(Custom column). В качестве имени запишем «Даты», а в качестве формулы следующее:

List.Dates([Дата подписки], Duration.Days(Duration.From([Дата отказа]-[Дата подписки])) +1, #duration(1, 0, 0, 0))

Формирование списка дат
Подробнее про создание вычисляемых столбцов и просмотр функций в PowerQuery можно ознакомиться в этой статье: Вычисления в PowerQuery
List.Dates – функция языка M, которая берет начальную дату и прибавляет к ней указанное кол-во дней, и все это выводит в виде списка(тип List). Для определения кол-ва дней мы используем обычное вычитание дат([Дата отказа]-[Дата продажи]), преобразуя при этом полученную разность в тип Длительность при помощи функции Duration.From, а далее в количество дней при помощи Duration.Days. Если этого не сделать, то можем получить ошибку несовпадения типов. После этого задаем шаг в днях, который нужно использовать для создания списка — #duration(1, 0, 0, 0). #duration(кол-во дней, кол-во часов, кол-во минут, кол-во секунд)
Будет добавлен новый столбец, в котором для каждого товара каждого клиента будет создан список дат использования продукта. Остается лишь щелкнуть левой кнопкой мыши на значке разнонаправленных стрелок в заголовке созданного столбца и выбрать Развернуть в новые строки(Expand to New Rows):
Развернуть в новые строки
Полученный столбец со всеми датами преобразуем в тип Дата(вкладка Главная(Home) -группа Преобразование(Transform) -раскрываем список Тип данных(Data type) и выбираем Дата(Data).
Если в дальнейшем мы планируем работать с результатом запроса в Excel через выгрузку в сводную таблицу(Главная(Home)Закрыть и загрузить(Close & Load)Отчет сводной таблицы(Pivot table report)), то на этом шаге можно сохранить и загрузить запрос и уже в сводной таблице просто поместить созданный столбец «Даты» в область Столбцов.
Но если мы хотим развернуть эти даты в столбцы непосредственно через PowerQuery, то для начала необходимо отсортировать столбец с датами по возрастанию: жмем на значок стрелки в правом верхнем углу столбца и из раскрывающегося списка выбираем Сортировка по возрастанию(Sort Ascending):
Сортировка дат по возрастанию
После чего используем столбец сведения: выделяем созданный столбец дат -вкладка Преобразование(Transform)Столбец сведения(Pivot Column). В качестве Столбца значений(Values column) указываем столбец Дата подписки. Нажимаем кнопку Расширенные параметры(Advanced options) и в качестве Функции агрегированного значения(Aggregate Value Function) указываем Количество(все)(Count (All))
Столбец сведения
После этого можно удалить лишние столбцы (например, столбец «Дата отказа») и останется выгрузить данные на лист: Главная(Home)Закрыть и загрузить(Close & Load)Таблица(Table). Созданная таблица выгрузится на лист.
В загруженном листе нам останется сделать форматирование, чтобы отметить только те ячейки, в которых у клиентов были активные подписки. Выделяем ячейки со значениями 0 и 1(те, что под датами) —Главная(Home)Условное форматирование(Conditional formatting)Правила выделения ячеек(Highlight Cells Rules)Равно(Equal To). Вписываем значение 1 и выбираем формат(если предустановленные форматы не подходят, то в раскрывающемся списке выбираем «Пользовательский формат»).
А чтобы нам единички и нули не портили картину, мы опять выделим все ячейки с нулями и единичками -Правая кнопка мыши —Формат ячеек(Format cells) -вкладка Число(Number). Идем в самый низ –(все форматы)(Custom). Выставляем в поле тип такой формат: ;;;
Теперь нули и единички видны не будут, а формат будет работать. В итоге добьемся нужного результата.


Но что делать, когда надо отследить подписку не по дням, а по месяцам? Самый большой тип длительности, который поддерживает функция duration – это дни. Поэтому придется хитрить. Здесь функция

List.Dates

нам уже не поможет, т.к. построена именно на возможностях функции duration. Но мы можем использовать более гибкую функцию:

List.Generate

. Она способна создавать практически любые списки.
Добавляем новый столбец(вкладка Добавление столбца(Add Column)Настраиваемый столбец(Custom column)). В качестве формулы запишем:

let 
        start = [Дата продажи],
        end = [Дата отказа]
in
        List.Generate(
                ()=>[day=start],
                each [day]<=end,
                each [day=Date.AddMonths([day], 1)],
                each [day]
            )

А дальше все так же: щелкнуть левой кнопкой мыши на значке разнонаправленных стрелок —Развернуть в новые строки(Expand to New Rows). И при необходимости все это «перевернуть» в столбцы(алгоритм точно такой же, как описан выше для списка дат).
Чуть подробнее про то, что мы записали в нашем созданном столбце:
Let – здесь мы задаем дату начала и окончания для каждой строки списка. Можно сказать просто запоминаем их для дальнейшего использования.
List.Generate – специальная функция, которой мы задаем начальное значение даты ( ()=>[day=start],); далее указываем условие по которому необходимо завершить цикл(each [day]<=end ) – т.е. на какой дате закончить создавать список; после этого указываем что именно делать внутри каждого шага цикла(each [day=Date.AddMonths([day], 1)]) – добавить один месяц и указываем, что проделывать это надо для каждого нового значения(each [day]).
Т.е. функция берет дату начала как точку отсчета([day=start]), прибавляет к ней указанный интервал(Date.AddMonths([day], 1)]) и так до тех пор, пока новая дата не станет меньше или равна конечной([day]<=end). И на каждом шаге новая дата добавляется в итоговый список.
На самом деле, для того, чтобы это использовать не надо особо вдумываться в процесс. Копи-паст никто не отменял 😊 Самое главное, на что здесь стоит обратить внимание, это функция Date.AddMonths. Она при каждом шаге цикла прибавляет к переменному значению day(которое начинается у нас с Даты продажи) по одному месяцу. Если нужен другой период(дни, недели, годы), то нужно просто подставить вместо AddMonths другую функцию. Вот возможные варианты:

  1. Date.AddDays – добавляет дни
  2. Date.AddWeeks – добавляет недели
  3. Date.AddMonths – добавляет месяцы(что мы и делали)
  4. Date.AddQuarters – добавляет кварталы
  5. Date.AddYears – добавляет годы

ВАЖНО: Что надо помнить, если используем создание списка не под дням, а, например, по месяцам. Даты для месяцев у нас могут быть разные (например, в примере выше дата начала для клиента «А» 10.09.2020, а дата окончания — 07.02.2021). Это может привести к тому, что в каких-то строках могут пропасть последние месяцы. Решается это довольно просто: сразу после того, как загрузили данные и изменили тип столбцов на тип Дата(второй шаг запроса — перед добавлением пользовательского столбца), необходимо щелкнуть правой кнопкой мыши по столбцу дат -выбрать пункт Преобразование(Transform)Месяц(Month)Начало месяца(Start of Month). Это заставит нашу функцию вычислять интервалы по месяцам корректно. Точно такой же алгоритм и для других периодов: лет, недель, кварталов.

Скачать файл:

  Список дат при помощи Power Query.xlsx (72,7 KiB, 407 скачиваний)

Так же см.:
Получить данные из файлов XML при помощи Power Query
Как перейти к определенной строке таблицы в Power Query
Относительный путь к данным PowerQuery
Курс валют при помощи Power Query


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Like this post? Please share to your friends:
  • Список данных в excel что это
  • Список данных в excel пример
  • Список да нет возможно excel
  • Список группы студентов в excel
  • Список группы в детском саду шаблоны пустые word