2013-07-26 101 views
0

我正在尋找將ISO日期轉換爲月份的方法,並且還需要將ISO週轉換爲月份。 我需要在Excel和Access中執行此操作。 我發現這個公式爲Excel,但將其轉換爲Access時不起作用。有沒有簡單的方法來實現這一點? 我發現這個Excel公式ISO日期轉換爲一個月(C2=date)和它完美的作品:如何從ISO日期和星期獲得月份

=MONTH(DATE(YEAR(C2),MONTH(C2)+(WEEKDAY(C2,2)+(DAY(DATE(YEAR(C2),MONTH(C2)+1,0)))-(DAY(C2))<4),(((7-(WEEKDAY(C2,2)))+(DAY(C2)))>3))) 

但是,當我修改爲Access查詢不返回正確的值:

Date_to_Month:MONTH(DATESERIAL(YEAR([WW_Index].[ISO_date]),MONTH([WW_Index].[ISO_date])+(WEEKDAY([WW_Index].[ISO_date],2)+(DAY(DATESERIAL(YEAR([WW_Index].[ISO_date]),MONTH([WW_Index].[ISO_date])+1,0)))-(DAY([WW_Index].[ISO_date]))<4),(((7-(WEEKDAY([WW_Index].[ISO_date],2)))+(DAY([WW_Index].[ISO_date])))>3))) 

我還需要將ISO week_year轉換爲月。我發現了這個公式,但它不工作:

=MONTH(DATE(YEAR(C2),1,-2)-WEEKDAY(DATE(YEAR(C2),1,3))+D2*7) 

舉例:到2012年5月6日,第18周,2012年4月30日的一週ISO因而有18周是小於4月4日天在這一週, 2012年5月。

任何幫助將不勝感激。

+0

什麼是'D2'?您正在使用的函數假定「C2」是正確的日期。問題必須在你的公式中。 '= MONTH(C2)'和'= WEEKDAY(C2,2)'返回你需要的! –

+0

你可以解決一個SQL解決方案?你在使用哪個SQL? –

回答

1

我不知道訪問,但你可以用這個公式

=MONTH(C2-WEEKDAY(C2-1)+4)

這應該是更容易訪問轉換做的第一部分(日期月)在Excel中更容易... ...

您正在尋找相關一週的週一第二部分,所以你得到錯誤的一個月在某些情況下,當週的週四(中點)應該永遠是正確的一個月內所以你可以ST加3吃出(-2變爲1),即

=MONTH(DATE(YEAR(C2),1,1)-WEEKDAY(DATE(YEAR(C2),1,3))+D2*7)

我假設C2是有關年度內日期和D2是ISO週數 但可能最好是有含C2這一年,例如只是2013年,然後你可以使用

=MONTH(DATE(C2,1,1)-WEEKDAY(DATE(C2,1,3))+D2*7)

+0

真棒!謝謝你,巴里。你的公式工作很好,而且更容易實現。將公式轉換爲MS-Access查詢後,它現在可以工作! –

相關問題