
Например, когда я ввожу месяц в ячейку, я пытаюсь получить определенные даты недели с первого по последний день месяца:
Если ячейка «I6» содержит «март» или любой другой месяц:
" MARCH "
затем:
- ячейка "F10" = 1-марта для-Солнце(первое воскресенье месяца)
- Ячейка «F11» = 5-мар для -четверг (первый четверг месяца)
- Ячейка "F12" = 8 марта для -Солнце(второе воскресенье месяца и т.д.)
- Ячейка "F13" =12-мар для -четверг
Возможно ли это? Я искал на разных сайтах, но безуспешно, большое спасибо.
решение1
Вы также можете использовать это:
Как это работает:
- В ячейке
K23
введите 1-е число месяца (как я использовал02/01/2020
, формат —MM/DD/YYYY
). - Подать заявку
MMM YY
на ячейку. - Формула в ячейке
K25
:
=K$23+MOD(7-WEEKDAY(K$23,2),7)
- Далее, формула в ячейке
K26
:
=K$23+MOD(4-WEEKDAY(K$23,2),7)
Примечание:В приведенной выше формуле 7
& 4
представляет воскресенье и четверг, и вы можете редактировать их по своему усмотрению.
Окончательная формула в ячейке
K27
и заполните ее:=IFERROR(IF(AND(MONTH(K26)=MONTH(K$23),COUNT(J$25:J25)=7),"",K25+7),"")
Теперь введите эту формулу в ячейку
J25
и заполните ее.
=IF(ISBLANK(K25),"",K25)
Отредактировано:
ОП поднял хороший вопрос о том, как управлять датами, если и когдаСнедень &Тчетверг больше 8 (как в мае, в августе воскресенья 5, а четверги 4).
Введите эту формулу в ячейку
L25
:=SUMPRODUCT(N(TEXT(ROW(INDIRECT(K25&":"&EOMONTH(K25,0))),"ddd")="Sun"))+SUMPRODUCT(N(TEXT(ROW(INDIRECT(K25&":"&EOMONTH(K25,0))),"ddd")="Thu"))
Примечание. Это касается воскресенья и четверга, где Sun
и Thu
можно редактировать.
- Формула в
K27
:
=K$25+MOD(7-WEEKDAY(K$25,2),7)
- Формула в ячейке
k28
:
=K$25+MOD(4-WEEKDAY(K$25,2),7)
Введите формулу в ячейку
K29
:=IFERROR(IF(AND(MONTH(K28)=MONTH(K$25),COUNT(J$27:J27)>=(L$25-1)),"",K27+7),"")
Примечание.
- Использование проверки МЕСЯЦА и КОЛИЧЕСТВА СТРОК с формулой в ячейке
K27
ограничиваетK29
Excel выводом только ДАТЫ для всех воскресений и четвергов. - Теперь продолжайте менять дату и год в ячейке
K23
или вK25
нужном месте. - При необходимости измените ссылки на ячейки в формуле.
решение2
Итак, эту проблему можно разбить на две части:
Условное форматирование
Вы хотите:
cell "F10" = 1-Mar for- Sun (first Sunday of the month)
основанный на A6
содержанииMARCH
Поэтому в ячейку F10 можно поместить
=IFERROR(IF(FIND("MARCH",A6)<>0,"contains March","Does not contain march","")
=Find("MARCH",A6)
выдаст ошибку, если не сможет найти "MARCH", поэтому мы используем =IFERROR()
. Если ошибки нет, это означает, что он был успешно найден, а затем примените нужную вам логику.
Первое воскресенье месяца
Чтобы найти первое воскресенье месяца, вы можете использовать эту формулу:
'=(A4+ВЫБРАТЬ(ДЕНЬНЕДЕЛИ(A4,1),7,6,5,4,3,2,1))'
где A4 в моем случае — это дата, на которую он ссылается, то он найдет вперед, следующее воскресенье. Если вы подключите этот метод к первому, вы должны быть в состоянии придумать то, что вы хотите.
Что касается ячеек A11, A12, A13, вы можете следовать тому же самому методу.
решение3
Пытаться:
F10: =DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-1)
F11: =DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-5)
F12: =F10+7
Выберите F12
и заполните по мере необходимости
G10: =F10
Пользовательский формат G10
:"dddd"
Выберите G10
и заполните по мере необходимости
ПРИМЕЧАНИЕ:В некоторых месяцах первый четверг будет происходить до первого воскресенья. Если вы предпочитаете начать с более раннего из первого четверга или первого воскресенья, а затем продолжить последовательность, то используйте эти формулы:
F10:=MIN(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-1),
DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-5))
F11: =MAX(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-1),
DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))+7-WEEKDAY(DATEVALUE("1/"&I6 & "/" & YEAR(TODAY()))-5))