2016-11-24 116 views
1

我正在尝试查找2月第一个周日开始的会计年度的周数。我已经达到了可以获得每年第一年开始的周数的程度(以我的情况为例)。从Excel中每个会计年度的第一个周日开始的周数

无法从第一个星期天开始。以下是我想到的。

=IF(AND(MONTH($E2)=2,DAY($E2)=1),1,ROUNDUP(($E2-DATE(YEAR($E2)-IF(MONTH($E2)<2,1,0),2,0)+WEEKDAY(DATE(YEAR($E2)-IF(MONTH($E2)<2,1,0),2,0)))/7,0)) 

我还希望它在年的上周六的周六结束。 例如:2016年2月,本周计数应从2016年7月7日开始,计数应在2017年4月4日结束。

+0

这似乎什么都没有做与SQL。 –

+0

单元格E2中存储了什么? – Steve

+0

@Addy,我更新了我的答案 – bzimor

回答

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)) 

我希望你想这样。

修订

如果你想财政季度的周数,使用:

=ROUNDUP(MOD(=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)),13.01),0) 
+0

二月份的第一周显示为0,并且周数也随之增加。 – Addy

+0

对不起,公式已更新。再次检查 – bzimor

+0

完美!奇迹般有效!现在另一项任务是我需要找到一个季度的一周。概念是一样的,财政年度从2月开始,请看看它是不是太多:) – Addy

0

我只是卡住了一起(毫无疑问有一个更优雅的方式来做到这一点)。你可以把它变成一个Module在VBA编辑器中使用它,然后在工作表上使用的功能=AltWeekNumber(E2)

Function AltWeekNumber(endDate As Range) As Date 
    Dim startDate As Date 
    startDate = FirstFebruarySunday(year(endDate.Value)) 
    If startDate > endDate Then 
     startDate = FirstFebruarySunday(year(endDate.Value) - 1) 
    End If 
    AltWeekNumber = DateDiff("w", startDate, endDate.Value, vbSunday) 
End Function 

Private Function FirstFebruarySunday(year As Integer) As Date 
    For i = 1 To 7 
     If Weekday(DateSerial(year, 2, i)) = 1 Then 
      FirstFebruarySunday = DateSerial(year, 2, i) 
      Exit Function 
     End If 
    Next i 
End Function 
+1

一个月的第一个星期日永远不会晚于第七天,所以你把'FirstFebruarySunday'简化为'DateSerial(年,2,8 - 平日(DateSerial(year,2,7)))''。 – Comintern

相关问题