ボジョレーヌーボーの日付をExcelで求める

Pocket

ボジョレーヌーボーは11月の第3木曜日です。
今年はまさに今日です。

毎年のヌーボーの日付をExcelのVBAで求める方法を考えてみます。

「第3木曜日」は言い換えると「15日から21日の間にある木曜日」です。
15日の曜日が木曜日であれば15日が第3木曜日
15日の曜日が水曜日であれば16日が第3木曜日
と考えます。

Weekday関数を使うと日曜日が1、月曜日が2、、土曜日が7となります。
15日が1(日曜日)ならば4日後の19日
15日が2(月曜日)ならば3日後の18日
15日が3(火曜日)ならば2日後の17日
15日が4(水曜日)ならば1日後の16日
15日が5(木曜日)ならば0日後の15日
15日が6(金曜日)ならば6日後の21日
15日が7(土曜日)ならば5日後の20日

これを式で表わすと
Weekdayが5以下の場合、15+(5-Weekday)
Weekdayが5超の場合、15+(12-Weekday)
となります。

ユーザー定義関数にまとめると次のようになります。
年を与えるとボジョレーヌーボーの解禁日である11月の何日かが返ります。

Function Nouveau(nen)
    w = Weekday(DateSerial(nen, 11, 15))
    If w <= 5 Then
        d = 15 + (5 - w)
    Else
        d = 15 + (12 - w)
    End If
    Nouveau = d
End Function

剰余を表す「Mod」を使うと場合分けが不要になり次のようにシンプルに。

Function Nouveau(nen)
    w = Weekday(DateSerial(nen, 11, 15))
    Nouveau = 15 + (12 - w) Mod 7
End Function

こうなると、もはやユーザー定義関数でなく、ワークシートでも簡単に計算できます。
次のように入力すればOKです。「2011」のところに年を入力します。

=15+MOD(12-WEEKDAY(DATE(2011,11,15)),7)

[ 2011年11月17日 | カテゴリー: Excel | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報