это мой первый вопрос здесь ..............

Que.:- У меня есть сотни дат в столбце A. Я хочу записать следующее воскресенье 1-го числа любого месяца. в ячейку B1 я поместил формулу =IF(AND(WEEKDAY(A:A)=1,DAY(A:A)=1),A:A) затем перетащил ее в столбец B, затем я получил требуемые даты и FALSE ценности. тогда в C1 я использовал формулу =MIN(B:B) я получаю точную требуемую дату.

но мне это нужно в одной формуле, поэтому я применил формулу =MIN(IF(AND(WEEKDAY(A:A)=1,DAY(A:A)=1),A:A)) но это не сработало.

Мне интересно, если кто-нибудь поможет мне получить это в одной формуле правильно. Спасибо! С уважением, HR

2 ответа2

1

Я думаю, что вы хотите, это первое воскресенье после сегодняшнего дня, которое происходит в первый день месяца. Если это так, следующая формула массива вернет эту дату:

=INDEX(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)),MATCH(1,(DAY(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)))=1)*(WEEKDAY(ROW(INDIRECT(TODAY()&":"&TODAY()+1000)))=1),0))

Чтобы ввести формулу массива , удерживайте ctrl-shift при нажатии enter . Если вы сделаете это правильно, Excel поместит фигурные скобки {...} вокруг формулы, которую вы видите на панели формул.

Эта часть формулы:

ROW(INDIRECT(TODAY()&":"&TODAY()+1000))

создает массив дат, начинающийся с СЕГОДНЯ и продолжающийся вперед на 1000 дней. Я выбрал 1000, потому что я не знаю максимально возможного интервала между первыми воскресеньями 1-го числа месяца. Эмпирически, кажется, что по крайней мере один в год, если не два, поэтому меньшее число может быть одинаково эффективным.

0

Причина, по которой ваша функция MIN(IF не работает, заключается в том, что вы не можете использовать AND в формулах такого типа, потому что AND будет возвращать один результат, а не требуемый массив - вы можете использовать * для имитации AND или использовать вложенные IF например, либо

=MIN(IF((WEEKDAY(A:A)=1)*(DAY(A:A)=1),A:A))

или же

=MIN(IF(WEEKDAY(A:A)=1,IF(DAY(A:A)=1,A:A)))

..... но если вы хотите получить следующее первое воскресенье месяца после любой даты в А2, вы можете использовать эту формулу без массивов:

=EOMONTH(A2,MATCH(1,WEEKDAY(EOMONTH(A2,{0,1,2,3,4,5,6,7,8,9,10,11,12,13})+1),0)-1)+1

Между инстанциями никогда не бывает более 14 месяцев, поэтому вы можете проверить следующие 14 числа первого месяца и выбрать первое воскресенье

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .