Excel: расчет недели финансового года - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь вычислить номер недели финансового года, на который приходится заданная дата - наш финансовый год начинается 1 июля и заканчивается 30 июня, недели go с воскресенья по субботу, и данные содержат несколько лет.

Например: 01.07.2017 выпадает на субботу, поэтому это будет первая неделя финансового года. 7 / 2-7 / 8, 2017 будет неделей 2, а неделя 6 / 23-6 / 30, 2018 будет неделей 52, это начнется с 1 недели 7/1/2018.

Любая помощь будет принята с благодарностью, спасибо!

Скриншот данных, с которыми я работаю

Скриншот формул в Weekday, FiscalYear и FiscalQuarter]

Ответы [ 3 ]

1 голос
/ 20 июня 2020

В отличие от других, я понимаю, что вы имеете в виду, что финансовый год всегда начинается 1 июля, а неделя меняется в воскресенье.

Алгоритм

  • Вычислить до 1 июля: =DATE(YEAR(A2)-IF(MONTH(A2)>=7,0,1),7,1)
  • Вычислить первое воскресенье финансового года: =prevJul1 +7-WEEKDAY(prevJul1 +6)
  • Вычислить номер недели с первого воскресенья: =INT((A2-firstSunday)/7)+1
  • Добавить 1 если prevJul1 не воскресенье

Собираем все вместе:

=INT((A2-(DATE(YEAR(A2)-IF(MONTH(A2)>=7,0,1),7,1)+7-WEEKDAY(DATE(YEAR(A2)-IF(MONTH(A2)>=7,0,1),7,1)+6)))/7)+1+(WEEKDAY(DATE(YEAR(A2)-IF(MONTH(A2)>=7,0,1),7,1))<>1)

введите описание изображения здесь

0 голосов
/ 20 июня 2020

Если A1 содержит 1 июля st любого года, то B1 :

=A1+CHOOSE(WEEKDAY(A1),0,6,5,4,3,2,1)

даст дату первого Воскресенье после или в этот день. Это день №1 недели №1 нового финансового года.

Теперь номер недели легко получить:

=INT(1+(date_in_question - day#1week#1)/7)

Копировать B1 и PasteSpecialValues ​​и форматирует в C1

C1 - дата начала нового финансового года

В D1 введите произвольную дату в новый финансовый год. В E1 введите:

=INT(1+(D1-C1)/7)

enter image description here

0 голосов
/ 20 июня 2020

Вычисляет номер недели для любой даты, когда неделя 1 начинается в первое воскресенье 1 июля или позже:

=INT(([@Date]-(DATE(YEAR([@Date]-WEEKDAY([@Date])+1)-IF(MONTH([@Date]-WEEKDAY([@Date])+1)>=7,0,1),7,1)+MOD(8-WEEKDAY(DATE(YEAR([@Date]-WEEKDAY([@Date])+1)-IF(MONTH([@Date]-WEEKDAY([@Date])+1)>=7,0,1),7,1)),7)))/7)+1

Вот пример вывода:

Date           | WeekNo
-------------- | ------
2017/06/17 Sat | 50    
2017/06/18 Sun | 51    
2017/06/19 Mon | 51    
2017/06/20 Tue | 51    
2017/06/21 Wed | 51    
2017/06/22 Thu | 51    
2017/06/23 Fri | 51    
2017/06/24 Sat | 51    
2017/06/25 Sun | 52    
2017/06/26 Mon | 52    
2017/06/27 Tue | 52    
2017/06/28 Wed | 52    
2017/06/29 Thu | 52    
2017/06/30 Fri | 52    
2017/07/01 Sat | 52    
2017/07/02 Sun | 1     
2017/07/03 Mon | 1     
2017/07/04 Tue | 1     
2017/07/05 Wed | 1     
2017/07/06 Thu | 1     
2017/07/07 Fri | 1     
2017/07/08 Sat | 1     
2017/07/09 Sun | 2     
2018/06/17 Sun | 51    
2018/06/18 Mon | 51    
2018/06/19 Tue | 51    
2018/06/20 Wed | 51    
2018/06/21 Thu | 51    
2018/06/22 Fri | 51    
2018/06/23 Sat | 51    
2018/06/24 Sun | 52    
2018/06/25 Mon | 52    
2018/06/26 Tue | 52    
2018/06/27 Wed | 52    
2018/06/28 Thu | 52    
2018/06/29 Fri | 52    
2018/06/30 Sat | 52    
2018/07/01 Sun | 1     
2018/07/02 Mon | 1     
2018/07/03 Tue | 1     
2018/07/04 Wed | 1     
2018/07/05 Thu | 1     
2018/07/06 Fri | 1     
2018/07/07 Sat | 1     
2018/07/08 Sun | 2     
2018/07/09 Mon | 2     
2019/06/17 Mon | 51    
2019/06/18 Tue | 51    
2019/06/19 Wed | 51    
2019/06/20 Thu | 51    
2019/06/21 Fri | 51    
2019/06/22 Sat | 51    
2019/06/23 Sun | 52    
2019/06/24 Mon | 52    
2019/06/25 Tue | 52    
2019/06/26 Wed | 52    
2019/06/27 Thu | 52    
2019/06/28 Fri | 52    
2019/06/29 Sat | 52    
2019/06/30 Sun | 53    
2019/07/01 Mon | 53    
2019/07/02 Tue | 53    
2019/07/03 Wed | 53    
2019/07/04 Thu | 53    
2019/07/05 Fri | 53    
2019/07/06 Sat | 53    
2019/07/07 Sun | 1     
2019/07/08 Mon | 1     
2019/07/09 Tue | 1     
2020/06/17 Wed | 50    
2020/06/18 Thu | 50    
2020/06/19 Fri | 50    
2020/06/20 Sat | 50    
2020/06/21 Sun | 51    
2020/06/22 Mon | 51    
2020/06/23 Tue | 51    
2020/06/24 Wed | 51    
2020/06/25 Thu | 51    
2020/06/26 Fri | 51    
2020/06/27 Sat | 51    
2020/06/28 Sun | 52    
2020/06/29 Mon | 52    
2020/06/30 Tue | 52    
2020/07/01 Wed | 52    
2020/07/02 Thu | 52    
2020/07/03 Fri | 52    
2020/07/04 Sat | 52    
2020/07/05 Sun | 1     
2020/07/06 Mon | 1     
2020/07/07 Tue | 1     
2020/07/08 Wed | 1     
2020/07/09 Thu | 1     
2021/06/17 Thu | 50    
2021/06/18 Fri | 50    
2021/06/19 Sat | 50    
2021/06/20 Sun | 51    
2021/06/21 Mon | 51    
2021/06/22 Tue | 51    
2021/06/23 Wed | 51    
2021/06/24 Thu | 51    
2021/06/25 Fri | 51    
2021/06/26 Sat | 51    
2021/06/27 Sun | 52    
2021/06/28 Mon | 52    
2021/06/29 Tue | 52    
2021/06/30 Wed | 52    
2021/07/01 Thu | 52    
2021/07/02 Fri | 52    
2021/07/03 Sat | 52    
2021/07/04 Sun | 1     
2021/07/05 Mon | 1     
2021/07/06 Tue | 1     
2021/07/07 Wed | 1     
2021/07/08 Thu | 1     
2021/07/09 Fri | 1     
2022/06/17 Fri | 50    
2022/06/18 Sat | 50    
2022/06/19 Sun | 51    
2022/06/20 Mon | 51    
2022/06/21 Tue | 51    
2022/06/22 Wed | 51    
2022/06/23 Thu | 51    
2022/06/24 Fri | 51    
2022/06/25 Sat | 51    
2022/06/26 Sun | 52    
2022/06/27 Mon | 52    
2022/06/28 Tue | 52    
2022/06/29 Wed | 52    
2022/06/30 Thu | 52    
2022/07/01 Fri | 52    
2022/07/02 Sat | 52    
2022/07/03 Sun | 1     
2022/07/04 Mon | 1     
2022/07/05 Tue | 1     
2022/07/06 Wed | 1     
2022/07/07 Thu | 1     
2022/07/08 Fri | 1     
2022/07/09 Sat | 1     
...