週番号と年があり、Microsoft Excelでその特定の週の月曜日の日付を計算したいと思います。
Year Week Date (Monday)
2012 1 January 2, 2012
2013 16 April 15, 2013
2014 42 October 13, 2014
カレンダーの週を特定の日付に変換するためにどの式を使用できますか?
ISO週番号の場合、この式を使用して月曜日を取得できます
=DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))+B2*7
a2の年とB2の週番号を想定
ここでの私の答えと同じです https://stackoverflow.com/a/10855872/1124287
週番号がA1で、年がA2である場合、次のスニペットは完全な週の日付を与えることができます
=$A$1*7+DATE($B$1,1,-4) through =$A$1*7+DATE($B$1,1,2)
もちろん、-4から2までのシリーズを完了すると、日曜日から土曜日までの日付があります。
お役に立てれば。
週番号から日付を取得するために反対を探しているなら、私はオンラインで解決策を見つけて、それをわずかに変更しました:
Function fnDateFromWeek(iYear As Integer, iWeek As Integer, iWeekDday As Integer)
' get the date from a certain day in a certain week in a certain year
fnDateFromWeek = DateSerial(iYear, 1, (iWeek * 7) _
+ iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
End Function
asap-utilities.com/からの公式 を取り、変更しました
DateSerial(iYear, 1, ((iWeek - 1) * 7)
に
DateSerial(iYear, 1, (iWeek * 7)
少なくともドイツでは、フォーミュラはうるう年2016で期待どおりに動作しないようですので、これに変更しました
Function fnDateFromWeek(iYear As Integer, iWeek As Integer, iWeekDday As Integer)
' get the date from a certain day in a certain week in a certain year
If iYear = 2016 Then
curDate = DateSerial(iYear, 1, ((iWeek) * 7) _
+ iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
Else
curDate = DateSerial(iYear, 1, ((iWeek - 1) * 7) _
+ iWeekDday - Weekday(DateSerial(iYear, 1, 1)) + 1)
End If
fnDateFromWeek = curDate
End Function
これはまだ間違っているかもしれませんが、私の限られたテストでは期待される結果が得られました:
Sub TestExample()
Debug.Print Format(fnDateFromWeek(2014, 48, 2), "ddd dd mmm yyyy") ' mo 24 Nov 2014
Debug.Print Format(fnDateFromWeek(2015, 11, 6), "ddd dd-mmm-yyyy") ' fr 13 Mar 2015
Debug.Print Format(fnDateFromWeek(2016, 36, 2), "ddd dd-mmm-yyyy") ' Mo 05 Sep 2015
End Sub
次の式は毎年適しています。もう調整する必要はありません。前提条件は、月曜日が週の最初の日であることです。
If A2 = Year and Week = B2
=IF(ISOWEEKNUM(DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)+1)>1;DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)+1+B2*7;DATE($A$2;1;1)-WEEKDAY(DATE($A$2;1;1);2)-6+B2*7)
簡単な解決策は、次の式を実行することです。
A1*7+DATE(A2,1,1)
水曜日が返される場合、式を次のように変更します。
(A1*7+DATE(A2,1,1))-2
これは、1暦年内の日付でのみ機能します。
週番号がA1
にあり、年がA2
にある場合、次を試すことができます。
A1*7+DATE(A2,1,1)
A1にwwYY形式の3桁または4桁の整数として週番号と年がある場合、式は次のようになります。
=INT(A1/100)*7+DATE(MOD([A1,100),1,1)-WEEKDAY(DATE(MOD(A1,100),1,1))-5
平日を差し引くと、一貫した週の開始日が返されます。最終減算を使用して、開始日を調整します。
=(MOD(R [-1] C-1,100)* 7 + DATE(INT(R [-1] C/100 + 2000)、1,1)-2)
yywwは、指定された週のexp:week 51 year 2014が1451になります