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


8

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

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

Ответы:


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)

Просто. Очень элегантно по сравнению с моей формулой выше. Спасибо.
wbeard52

3

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

=SUMPRODUCT(N(WEEKDAY(ROW(INDIRECT(A1&":"&EOMONTH(A1,0))))=1))

3
=DAY(EOMONTH(A1,0))-NETWORKDAYS.INTL(A1,EOMONTH(A1,0),11)

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


Что такое 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"))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.