dポイントプレゼントキャンペーン実施中!

シート名「休日」に祭日を設定して、このシートの祭日の日付を利用して、業務設定を行っております。
年間の祭日で固定していない祭日をエクセルの数式等で設定出来る方法を教えてください。
例えば、今年の成人の日は「1月9日」ですが
来年の成人の日は「1月8日」です。
一年間の休日を手動で更新しておりますが、
出来れば数式を使用して自動更新が出来れば作業が楽になると思い、
質問させていただきました。
親切に教えて頂ける方、宜しくお願い致します。

A 回答 (6件)

A列(年)|B列(月)|C列(日)


として

D列に
1.
通常の式
日曜なら振替
=IF(WEEKDAY(DATE(A3,B3,C3))=1,DATE(A3,B3,C3)+1,DATE(A3,B3,C3))

2.
第2月曜日
=DATE(A6,B6,1)+(16-WEEKDAY(DATE(A6,B6,1))-IF(WEEKDAY(DATE(A6,B6,1))<3,7,0))

3.
第3月曜日
=DATE(A14,B14,1)+(23-WEEKDAY(DATE(A14,B14,1))-IF(WEEKDAY(DATE(A14,B14,1))<3,7,0))

うまく使ってください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速試してみます。

お礼日時:2023/10/16 09:37

No.5です。

前回回答文中のURLにコロンがもれていました。正しくは
https://shukujitsu.net/years/2024/
です。
お詫びして訂正いたします。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。

お礼日時:2023/10/17 17:35

>年間の祭日で固定していない祭日をエクセルの数式等で設定出来る方法


とのご要望ですが、銀鱗さんのご指摘のように、春分の日、秋分の日のように
>演算で求められないお休みの日
も存在します。春分の日、秋分の日は前年の2月1日の官報に掲載されます。逆に、それより前には、春分の日・秋分の日は「まだ正式には決まっていない」ということになります。

ただ、計算の根拠となる理論はあります。ですから、地球の運行状態などが現在と変わらないと仮定すると、将来の春分日・秋分日を計算で予想することができます。
しかし、既に明らかになっている通り、地球の運行状態は常に変化しているために、将来観測した結果が必ずしもこの計算通りにはならない可能性があります。

それを承知の上で、「万年祝日カレンダー」を作成するとすると添付画像のようなものになります。
添付画像が見にくいので、別サイトにもアップしておきます。
https://gyazo.com/58c2f98079cd8f7bf8f807469e4b4b50

画像①のような表を作成する目的で画像②のような数式を入れています。
A1セルに「年号」を入力するとその年の「祝日」が「日付」「第○曜日」で決定されるものをB列に列挙し、C列に振替休日を考慮した結果を返します。

そもそも、祝日が日曜日と被ったときは月曜日が振替休日になりますが、これはあくまでも法律上の話であり、土日を休業としている事業所においては、「祝日が日曜日と被る場合は、翌日が(振替休日ではなく)祝日そのものになる」と考えても「土~月の3連休」という実体は変わりません。

従って、添付画像のような「万年祝日カレンダー」を作成し、振替休日考慮後の配列の範囲を「祝日」として指定することで、土日を含めた休業日を把握できるので、各種数式に使用できます。

しかし、こんなことをしても、結局、春分の日、秋分の日が正しいか、確認する手間を省くことができません。

どうせ、数あるカレンダーサイトで確認するなら、1年に1回の話ですから、tagletさんのご指摘のように、ダウンロードなど、例えば以下のURL↓
https//shukujitsu.net/years/2024/
で、祝日一覧のコピーボタンを押して、EXCELの祝日一覧に貼付けする方法なら、殆ど手間もかかりません。
「エクセルの数式で教えてください。」の回答画像5
    • good
    • 0

Function GetSeijinNoHi(year As Integer) As Date


' 成人の日の日付を計算
If year < 2000 Then
' 1948年から1999年まで
GetSeijinNoHi = DateSerial(year, 1, 15)
Else
' 2000年以降
GetSeijinNoHi = DateSerial(year, 1, 1) ' 1月1日
If Weekday(GetSeijinNoHi, vbMonday) > 1 Then
' 月曜日でない場合
GetSeijinNoHi = DateSerial(year, 1, 2 + (8 - Weekday(GetSeijinNoHi, vbMonday)))
Else
' 月曜日の場合
GetSeijinNoHi = DateSerial(year, 1, 2)
End If
End If
End Function
サンプルです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2023/10/16 10:57

演算で求められないお休みの日もあるからなぁ。


例外があると、結局は一覧表を作ることになるので、演算の手間を掛けないほうが楽だよ。

その手の日付を掲載しているサイトを参考に一覧表を作るだけで完結する話です。
3年分作っておいて、毎年決まった時期に更新すれば良いんじゃないかな。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2023/10/16 10:57

春分の日・秋分の日の求め方


https://enterprisezine.jp/article/detail/865

ちなみに、私はここのCSVを使っています。
「国民の祝日」について(内閣府)
https://www8.cao.go.jp/chosei/shukujitsu/gaiyou. …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせて頂きます。

お礼日時:2023/10/16 09:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A