如何计算excel中2个日期范围之间的周数

时间:2016-11-29 09:35:35

标签: excel date datetime excel-formula excel-2007

我在这里有一个问题,我在Excel中有3列,A1是日历日期;列B1具有fiscal_quarter_start_date;和栏目中的fiscal_quarter_end_date。

我试图找到介于A2和A3之间的周数。这里的问题是我应该把第一个星期日视为本季度的第一周。我的财政年度从每个月的2月开始。

我进行此计算的原因是填充一个季度的周数,其中我的第一周从该季度的第一个星期日开始。

=ROUNDUP(MOD(IF(A13>=IF(DATE(YEAR($A13),2,1)=1,DATE(YEAR($A13),2,1),DATE(YEAR(A13),2,7-WEEKDAY(DATE(YEAR(A13),2,1),1)+2)),ROUNDUP((A13-IF(WEEKDAY(DATE(YEAR(A13),2,1),1)=1,DATE(YEAR($A13),2,1),DATE(YEAR($A13),2,7-WEEKDAY(DATE(YEAR($A13),2,1),1)+2))+1)/7,0),ROUNDUP((A13-IF(DATE(YEAR($A13)-1,2,1)=1,DATE(YEAR($A13)-1,2,1),DATE(YEAR($A13)-1,2,7-WEEKDAY(DATE(YEAR($A13)-1,2,1),1)+2))+1)/7,0)),13.01),0)

以上是我一路走来的公式。然而,用13进行四舍五入不是一个可行的解决方案,因为它不一定总是有13个星期。

例如:5/1/16应该是第1周因为它是q2的乞讨而且5/1/16是星期日的开始。在这种情况下,使用上面的公式结果为一周是13

请帮帮我..

4 个答案:

答案 0 :(得分:0)

您可以使用WEEKNUM获取周数。

但是你提到你的一周不会在星期六结束,而是在周日结束,所以你必须做=WEEKNUM(<insert here where the date is>,2)

答案 1 :(得分:0)

=WEEKNUM (serial_num, [return_type])
  • serial_num - 序列号格式的有效Excel日期。
  • return_type - [可选]星期开始的那一天。默认值为1。

Return_type可以是1或2:

  • 1 - 星期日开始
  • 2 - 周从星期一开始

或...读取它here以计算两个日期之间的周数。

  1. 将此公式=(A2-A1)/7输入空白单元格,(A2表示结束日期,A1表示开始日期)
  2. 如果您只想整整一周,请应用此INT功能:=INT((A2-A1)/7)
  3. 试试here, on sheet "week"

    希望它能提供帮助。

答案 2 :(得分:0)

假设Quarter开始和结束日期分别在A3:A6

=IF(AND(C1>=$A3,C1<$A4),WEEKNUM(C1)-WEEKNUM($A3)+1,IF(AND(C1>=$A4,C1<$A5),WEEKNUM(C1)-WEEKNUM($A4)+1,IF(AND(C1>=$A5,C1<$A6),WEEKNUM(C1)-WEEKNUM($A5)+1,WEEKNUM(C1)-WEEKNUM($A6)+(IF(AND(C1>=DATE(YEAR(C1),1,1),C1<DATE(YEAR(C1),MONTH($A6),DAY($A6))),53,1)))))

这是检查上面单元格中的日期(C1)是否在季度开始日期和结束日期之间,并检查从开始日期开始的周数差异。为了覆盖Q4延伸到下一年的异常,最后的IF语句在受影响的日期增加了53而不是1。

编辑#1

=WEEKNUM(A1)-WEEKNUM(B1)+IF(AND(A1>=DATE(YEAR(A1),1,1),A1<DATE(YEAR(A1),MONTH(B1),DAY(B1))),53,1)

这适用于您在评论中提到的A1:C1格式。显然,这依赖于B1C1手动更新。

编辑#2

=WEEKNUM(C1)-WEEKNUM(B1)

如果你计算第1周05/01/2016,那么在结果中加1。从最低周数中取出最高周数(默认值从星期日算起,或者如果要精确定义,则可以更改为(C1,1))。 Reult是13,与手动计算相符。

您将需要查看上一个编辑,以获取当季度在另一年结束时您将需要的if公式的示例。为了扭转负面数字,当日期在下一年的早期时需要增加52,而当它没有时,它需要增加0.

答案 3 :(得分:-1)

您可以使用“隐藏”功能DATEDIF:

例如在A1中,我们写了开始日期(2016年5月1日),在B1 - 结束日期(2016年7月31日)和C1 = DATEDIF(A1,B1,“d”)/ 7结果将是13