0

我正在寻找一种将 ISO 日期转换为月的方法,我还需要将 ISO 周转换为月。我需要在 Excel 和 Access 中执行此操作。我找到了这个 excel 公式,但是在将其转换为 Access 时它不起作用。有没有一种简单的方法可以做到这一点?我发现这个 Excel 公式可以将 ISO 日期转换为月份(C2=date),并且效果很好:

=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。我找到了这个公式,但它不起作用:

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

示例:2012 年第 18 周是 ISO 周,即 2012 年 4 月 30 日至 5 月 6 日。本周的 4 月天数少于 4 天,因此 2012 年第 18 周是 5 月。

任何帮助将不胜感激。

4

1 回答 1

1

我不知道访问,但您可以使用此公式在 Excel 中更轻松地完成第一部分(日期到月份)

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

那应该更容易转换为访问......

对于第二部分,您会找到相关周的星期一,因此在某些情况下您会得到错误的月份,一周中的星期四(中点)应该始终在正确的月份内,因此您只需添加 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)

于 2013-07-26T09:59:28.163 回答