8

В Microsoft Excel я ищу, чтобы определить количество воскресений в любом месяце. Я составляю таблицу бюджета, и некоторые из вспомогательных счетов получают дополнительное финансирование, когда пять воскресений в месяце вместо четырех.

Единственная ячейка, на которую я должен ссылаться - это название листа, которое находится в ячейке A1 и соответствует текущему месяцу. Для примера 6/1/14

6 ответов6

12

Попробуйте это, где A1 - начальный день месяца:

=SUMPRODUCT(N(TEXT(ROW(INDIRECT(A1&":"&EOMONTH(A1,0))),"ddd")="Sun"))

Вы также можете использовать это для любого дня недели, просто измените "Sun" и любой диапазон дат, заменив A1 на дату начала, а EOMONTH(A1,0) на дату окончания.

9

Если указанная вами дата всегда является первой в месяце, то эта также будет работать:

=INT((WEEKDAY(A1-1)+EOMONTH(A1,0)-A1)/7)
3

Очень похоже на предыдущий ответ, но немного чище ...

=SUMPRODUCT(N(WEEKDAY(ROW(INDIRECT(A1&":"&EOMONTH(A1,0))))=1))
2
=DAY(EOMONTH(A1,0))-NETWORKDAYS.INTL(A1,EOMONTH(A1,0),11)

РЕДАКТИРОВАТЬ: Это работает в Excel 2016, не уверен, когда NETWORKDAYS.INTL был представлен.

1

Мне кажется, я нашел еще один способ снять кожу с этой кошки (так сказать).

Если вы хотите избежать ввода дат и иметь большой лист для прогноза (например, 18 месяцев), то вместо этого вы можете просто указать формуле, какой у вас месяц и год, и соответственно отформатировать ее. Это объединилось с абсолютной ссылкой на ячейки заголовка, которые содержат день недели, о котором идет речь, и у вас есть намного более компактная и чистая таблица (на мой взгляд).

A3 = январь, B3 = 2017, C2:I2 = 3 аббревиатура дня символа (т. Е. SUN)

Введите формулу в ячейку C3

=SUMPRODUCT(N(TEXT(ROW(INDIRECT(DATEVALUE(TEXT(CONCAT($A3,"/",$B3),"mm/dd/yyyy"))&":"&EOMONTH(DATEVALUE(TEXT(CONCAT($A3,"/",$B3),"mm/dd/yyyy")),0))),"ddd")=C$2))

Хорошей охоты

0

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

Это достигается путем замены A1 на:

date(year(today()),month(today()),1)

Предполагается, что вы хотите его на текущий месяц.

=SUMPRODUCT(N(TEXT(ROW(INDIRECT(date(year(today()),month(today()),1)&":"&EOMONTH(date(year(today()),month(today()),1),0))),"ddd")="Sun"))

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