Круглый год с декабря по январь

У меня есть следующая формула, настроенная для определения того, приближается ли чей-то день рождения на следующей неделе.

=ЕСЛИ(И(Q2>(СЕГОДНЯ()+4),Q2‹(СЕГОДНЯ()+12)),"Да","Нет")

*Примечание: Q2 — это день рождения человека, но в 2016 году. (т.е. 20.12.1978 на самом деле 20.12.2016)

Это работает, за исключением случаев, когда я добираюсь примерно до середины декабря, поскольку следующая неделя перетекает в следующий год. Как я могу заставить диапазон следующей недели перейти в январь следующего года (т.е. с декабря 2016 года по январь 2017 года)?


person anra    schedule 28.12.2016    source источник


Ответы (3)


Вы можете указать дату в текущем году с помощью формулы, например

=date(2016,month(q2),day(q2))

Чтобы учесть, что дата плюс несколько дней может быть в следующем году, вы можете использовать

=date(year(today()+ajustment),month(q2),day(q2))

Вся ваша формула выглядит следующим образом:

=IF(AND(DATE(YEAR(TODAY()+4),MONTH(Q13),DAY(Q13))>(TODAY()+4),DATE(YEAR(TODAY()+12),MONTH(Q13),DAY(Q13))<(TODAY()+12)),"Yes","No")

Теперь формула работает и для дат нового года.

person teylyn    schedule 28.12.2016
comment
Это возвращает меня к моей первоначальной проблеме - person anra; 28.12.2016
comment
Я внес некоторые изменения после публикации моей первой формулы. Этот теперь работает в течение года без каких-либо изменений. - person teylyn; 28.12.2016
comment
Я ДУМАЮ, ЧТО СДЕЛАЛ ЭТО! - person anra; 29.12.2016

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

=DATEDIF("дата_начала", "дата_окончания", "д")

=DATEDIF("11.01.2011", "11.10.2011", "d") Результат: 9

Царапать:

Q3 = DATEDIF(сегодня, дата рождения, "d")

=ЕСЛИ(И(Q3>4,Q3‹12),"Да","Нет")

Таким образом, вы можете использовать DateDiff внутри своего оператора IF, чтобы получить оценку дня рождения в ближайшие дни. Стоит отметить, что с помощью такой формулы вы не получаете годовщину со следующей недели, а получаете только те, у которых дата рождения приходится на период между 4 днями сегодняшнего дня и менее чем через 12 дней с сегодняшнего дня.

person Jocimar Candido    schedule 28.12.2016

Проблема в том, что ваше решение зависит от года, когда вы должны проверять только месяц и день. Это можно сделать с помощью функции ТЕКСТ(...).

Например: =VALUE(TEXT(I2,"mm"))

вернет месяц как число. Это близко к тому, что вы искали?

Вот как будет выглядеть решение при таком подходе:

=IF(AND(VALUE(TEXT(G2,"mm"))=VALUE(TEXT(TODAY(),"mm")),VALUE(TEXT(G2,"dd"))>(VALUE(TEXT(TODAY(),"dd"))+1),VALUE(TEXT(G2,"dd"))<(VALUE(TEXT(TODAY(),"dd"))+12)),"Yes","No")

Кроме того, это решение не зависит от года, поэтому вы можете использовать чей-то фактический день рождения и не менять год каждый раз.

person mike morris    schedule 28.12.2016
comment
Не могли бы вы уточнить. Или поместите это в контексте формулы, которую я показал. Спасибо! - person anra; 28.12.2016
comment
Текст будет бесполезен, когда вы попытаетесь сравнить, сколько дней осталось до даты. - person teylyn; 28.12.2016
comment
Конечно, было бы. Вам просто нужно сравнить месяц и дни, чтобы сделать его эффективным. Кроме того, помогает преобразование в число (см. Последнее редактирование). - person mike morris; 28.12.2016
comment
Вот что у меня есть: Col P: Дата в текстовом формате {т.е. ячейка P2 = 1-2} Col Q: День рождения в формате даты {т.е. =DATEVALUE(P2)} Col R: День рождения на следующей неделе? {т.е. =ЕСЛИ(И(Q2›(СЕГОДНЯ()+4),Q2‹(СЕГОДНЯ()+12)),Да,Нет) - person anra; 28.12.2016
comment
Тогда вы должны пойти с ответом Джосимара. - person mike morris; 28.12.2016