Рассчитать количество воскресений в месяце

8

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

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

wbeard52
источник

Ответы:

12

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

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

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

Джей-ар
источник
1
Ух ты. Это действительно креативно. Дай мне понять. Мы создаем значения даты для всего месяца с помощью косвенной и строковой функций? Затем мы преобразуем их в текст в виде Солнца, Пн и т. Д. Мы оцениваем состояние Солнца и меняем результат на единицу или ноль, а затем суммируем результат. Это верно?
wbeard52
да точно .. :)
Jay-Ar
9

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

=INT((WEEKDAY(A1-1)+EOMONTH(A1,0)-A1)/7)
teylyn
источник
Просто. Очень элегантно по сравнению с моей формулой выше. Спасибо.
wbeard52
3

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

=SUMPRODUCT(N(WEEKDAY(ROW(INDIRECT(A1&":"&EOMONTH(A1,0))))=1))
user743733
источник
3
=DAY(EOMONTH(A1,0))-NETWORKDAYS.INTL(A1,EOMONTH(A1,0),11)

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

SRCP
источник
Что такое Networkdays.Intl, он не работает со всеми Excel
Yass
Ах, ты прав. Я не видел, чтобы он имел в виду Excel 2010. У меня 2016 год. В отличие от сетевых дней, Networkdays.intl позволяет выбирать выходные. В этом случае я сказал Excel, что выходные - только воскресенье, вот что означает 11. Таким образом, он дает вам количество дней в периоде, не считая воскресенья.
SRCP
NETWORKDAYS.INTLдоступен с Excel 2010 . Вы можете увидеть число 2010 рядом с его именем. см. скриншот его работы в Excel 2010
phuclv
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))

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

Джереми Каст
источник
1

Небольшое отклонение от принятого ответа , когда вам не нужен первый день месяца 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"))
CalvT
источник