2016-11-24 117 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

相關問題