计算从每年2月的第一个星期日开始的第一周

时间:2016-11-28 06:02:33

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

我有一个问题。我想计算一年中第一个星期日的周数。我工作的地方他们的日历从2月1日开始。要计算我在excel中有一个A2列,其日期格式为mm / dd / yyyy。我想为列生成相应的会计周。

我的结果集示例:

对于2/1/15,一年中的一周应为1 对于2/7/16,一周的年份数应为1

我尝试了以下公式,但它从本财年的第一天开始,而不是今年的第一个星期日。

=INT((A1-WEEKDAY(E9165)-DATE(YEAR(A1+7-WEEKDAY(A1))-(MONTH(A1)<2),2,1))/7)+2

请帮忙......

-Sandra

3 个答案:

答案 0 :(得分:1)

假设您的工作年限始于2月1日后的第一个星期日:

=IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))

我们首先确定从2月的第一个星期日开始的日期的周数。要做到这一点,我已经使用WEEKNUM()-WEEKNUM(02/01/SAMEYEAR)从该日期开始1天强制第1周,因为Excel默认从第0周开始计算。使用IF(),我们声明如果结果为0或更小,则将结果添加到52,这将为1月份的日期提供正确的结果,因为它们会产生负值。

编辑 - 非常长的公式,但以Q1 W1格式为您提供本季度的一周:

=SUBSTITUTE(CONCATENATE("Q",INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13)+(IF(INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))-INT((IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13))*13)=0,0,1))," W",INT(IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))-INT((IF(WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1)<=0,52+WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1),WEEKNUM(A1)-WEEKNUM(DATE(YEAR(A1),2,1)-1))/13))*13)),"W0","W1")

长篇大论,我尝试了多种方法试图找到一个更简洁的解决方案,但这就是我可以开始工作的全部内容。如果使用多个列,那将会更加整洁。

答案 1 :(得分:0)

使用此公式:

=IF(A1>=IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1),2,1),DATE(YEAR(A1),2,7-WEEKDAY(DATE(YEAR(A1),2,1),1)+2)),ROUNDUP((A1-IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1),2,1),DATE(YEAR(A1),2,7-WEEKDAY(DATE(YEAR(A1),2,1),1)+2))+1)/7,0),ROUNDUP((A1-IF(WEEKDAY(DATE(YEAR(A1),2,1),1)=1,DATE(YEAR(A1)-1,2,1),DATE(YEAR(A1)-1,2,7-WEEKDAY(DATE(YEAR(A1)-1,2,1),1)+2))+1)/7,0))

答案 2 :(得分:0)

聚会晚了,但一直在寻找答案并找到了这个话题。最终自己玩了一下这个函数,而只推算日期就容易多了; = WEEKNUM(“日期”-您希望抵消的天数)

Ex;如果单元格A1保留了我的日期,则我要转换为2/1/2021。 = WEEKNUM(A1-31)结果为“ 1”。