Excel 2007には、年番号と週番号があり、月番号を計算したいと思います。
私の場合、毎週の始まりは月曜日であるため、何週間かは何年にもわたって重複することになります。
例:
Year: 2012
Week 1 started: Monday 2nd January
Sunday 1st January was in week 52 of 2011
したがって、以下のようになります。
Year: 2011
Week: 10
10週目が3月7日に始まったので、10週目は3か月目でした。
これについて助けてくれてありがとう。
私は次のアプローチを提案します
1月1日の(ISO)週を決定します( このページ を参照)[セル内C4]
=INT((B4-DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3)+WEEKDAY(DATE(YEAR(B4-WEEKDAY(B4-1)+4),1,3))+5)/7)
(B4を想定=DATE([Year],1,1)
)
第1週が始まる日を計算します[セル内D4]
=IF(C4=1,B4-WEEKDAY(B4,3),B4+7-WEEKDAY(B4,3))
問題の週の月曜日と対応する月を決定します
=MONTH(D4+7*([Week]-1))
実際には、これをもう少し簡単に行うことができます。年が_A2
_の場合、例: 2012、週番号は_B2
_で、この式を使用してその週の開始日を取得できます
=DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))+B2*7
日付としてフォーマット
......明らかに、それをMONTH関数でラップして、月を取得できます。
=MONTH(DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))+B2*7)
結果セルを一般的にフォーマットする
説明
上記は、前年のlast月曜日の日付を検索し、週数* 7を加算して、関連する週の開始日を示します。
first ISO週の年の日は、常に12月29日から1月4日までの期間の唯一の月曜日であるため、その日付を見つけるには、1月5日の直前の月曜日を見つけることができます。
任意の日付の直前の月曜日を見つけるには、この一般式を使用できます
=date-WEEKDAY(date-2)
したがって、日付がA2に示されている年の1月5日である場合、それはと同じです。
=DATE(A2,1,5)-WEEKDAY(DATE(A2,1,3))
.....しかし、それは今年の最初の月曜日になります。したがって、前年の最後の月曜日が必要な場合は、7を引くことができます。これを行う1つの方法は、5から7を引いて-2を取得することです。
=DATE(A2,1,-2)-WEEKDAY(DATE(A2,1,3))
ISO週には常に1月4日が含まれるため、平日を月曜日から始めましょう(明らかに、「年」は年のセルです)。
WEEKDAY(DATE(year;1;4))
これは、月曜日(プラス1)を見つけるためにその日付から戻る必要がある日数です。
DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1
だから今、私たちはただ頼る必要があります...
DATE(year;1;4)-WEEKDAY(DATE(year;1;4))+1+weeknumber*7