
エクセルでカレンダーを作成しようとしていますが、
つまづいてしまったので、どなたか教えていただけないでしょうか
A1セルに指定年月日(例:平成19年1月1日)と
入力したら、該当月の日にちと曜日を表示させ
土日はセルの色を変えるというところまで
できたのですが、さらに出勤しない日(国民の祝日)も
セルの色を変えたいと思っています。
カレンダーとは別のシートなどに国民の祝日リストを
作成し、条件付き書式でmatch関数を利用して、
国民の祝日リストに合致したセルも色を変えたいのですが、
元旦やこどもの日のように月日が決まっている祝日ではなく
成人の日や海の日など、ある月の第2月曜日という祝日の場合、
A1セルの指定年月日から当該年の成人の日等を返すことは
できるのでしょうか?
説明がわかりにくいかもしれませんが、要は、
A1セルが2007/1/1の時に
B1セルに当月の第2月曜日を返す
C1セルに7月の第2月曜日を返す
ということは可能なのでしょうか?
よろしくお願い致します。
No.5
- 回答日時:
もう回答は出てしまっているようだけど、参考までに
別のシートに祝日を設定する方法じゃない方法でなく、与えられた日付が祝日かどうかを返す非常に見にくいモジュールを^^;
祝日を表示させたいセル =国民の祝日(日付が入ったセル,1)
Public Function 国民の祝日(今日 As Date, chk_l As Integer) As String
Dim 年 As Long
国民の祝日 = ""
年 = Year(今日)
If Format(今日, "yyyymm") < 194807 Then
Exit Function
End If
If Format(今日, "mmdd") = 101 Then
国民の祝日 = "元日"
Exit Function
End If
If 年 < 2000 And Format(今日, "mmdd") = 115 Then
国民の祝日 = "成人の日"
Exit Function
ElseIf 年 >= 2000 Then
If 第一月曜(DateSerial(年, 1, 1)) + 7 = 今日 Then
国民の祝日 = "成人の日"
Exit Function
End If
End If
If 年 >= 1966 And Format(今日, "mmdd") = 211 Then
国民の祝日 = "建国記念の日"
Exit Function
End If
If DateSerial(年, 3, Int(0.24242 * 年 - Int(年 / 4) + 35.84)) = 今日 Then
国民の祝日 = "春分の日"
Exit Function
End If
If Format(今日, "mmdd") = 503 Then
国民の祝日 = "憲法記念日"
Exit Function
End If
If Format(今日, "mmdd") = 429 Then
If 年 < 1989 Then
国民の祝日 = "天皇誕生日"
Exit Function
ElseIf 年 >= 1989 And 年 < 2007 Then
国民の祝日 = "みどりの日"
Exit Function
Else
国民の祝日 = "昭和の日"
Exit Function
End If
End If
If 年 >= 2007 And Format(今日, "mmdd") = 504 Then
国民の祝日 = "みどりの日"
Exit Function
End If
If Format(今日, "mmdd") = 505 Then
国民の祝日 = "こどもの日"
Exit Function
End If
If 年 >= 1995 Then
If 年 < 2003 And Format(今日, "mmdd") = 720 Then
国民の祝日 = "海の日"
Exit Function
ElseIf 年 >= 2003 Then
If 第一月曜(DateSerial(年, 7, 1)) + 14 = 今日 Then
国民の祝日 = "海の日"
Exit Function
End If
End If
End If
If 年 >= 1966 Then
If 年 < 2003 And Format(今日, "mmdd") = 915 Then
国民の祝日 = "敬老の日"
Exit Function
ElseIf 年 >= 2003 Then
If 第一月曜(DateSerial(年, 9, 1)) + 14 = 今日 Then
国民の祝日 = "敬老の日"
Exit Function
End If
End If
End If
If DateSerial(年, 9, Int(0.24204 * 年 - Int(年 / 4) + 39.01)) = 今日 Then
国民の祝日 = "秋分の日"
Exit Function
End If
If 年 >= 1966 Then
If 年 < 2000 And Format(今日, "mmdd") = 1010 Then
国民の祝日 = "体育の日"
Exit Function
ElseIf 年 >= 2000 Then
If 第一月曜(DateSerial(年, 10, 1)) + 7 = 今日 Then
国民の祝日 = "体育の日"
Exit Function
End If
End If
End If
If Format(今日, "mmdd") = 1103 Then
国民の祝日 = "文化の日"
Exit Function
End If
If Format(今日, "mmdd") = 1123 Then
国民の祝日 = "勤労感謝の日"
Exit Function
End If
If 年 >= 1989 And Format(今日, "mmdd") = 1223 Then
国民の祝日 = "天皇誕生日"
Exit Function
End If
If 今日 = #4/10/1959# Then
国民の祝日 = "皇太子明仁親王の結婚の儀"
Exit Function
End If
If 今日 = #2/24/1989# Then
国民の祝日 = "昭和天皇の大喪の礼"
Exit Function
End If
If 今日 = #11/12/1990# Then
国民の祝日 = "即位礼正殿の儀"
Exit Function
End If
If 今日 = #6/9/1993# Then
国民の祝日 = "皇太子徳仁親王の結婚の儀 "
Exit Function
End If
If chk_l Then
If 今日 > #4/12/1973# Then
If Weekday(今日) = 2 Then
If Len(国民の祝日(今日 - 1, 0)) Then
国民の祝日 = "振替休日"
Exit Function
End If
ElseIf 年 >= 2005 Then
If Weekday(今日) = 3 Then
If Len(国民の祝日(今日 - 1, 0)) Then
If Len(国民の祝日(今日 - 2, 0)) Then
国民の祝日 = "振替休日"
Exit Function
End If
End If
ElseIf Weekday(今日) = 4 Then
If Len(国民の祝日(今日 - 1, 0)) Then
If Len(国民の祝日(今日 - 2, 0)) Then
If Len(国民の祝日(今日 - 3, 0)) Then
国民の祝日 = "振替休日"
Exit Function
End If
End If
End If
End If
End If
End If
If 年 >= 1985 Then
If Len(国民の祝日(今日 - 1, 0)) Then
If Len(国民の祝日(今日 + 1, 0)) Then
国民の祝日 = "国民の休日"
Exit Function
End If
End If
End If
End If
End Function
Public Function 第一月曜(今日 As Date) As Date
今日 = DateSerial(Year(今日), Month(今日), 1)
Do Until Weekday(今日) = 2
今日 = 今日 + 1
Loop
第一月曜 = 今日
End Function
参考URL:http://okwave.jp/qa2417145.html

No.3
- 回答日時:
この問題が解決したら振替休日の方法を考えなきゃ
いけないと思っていたのですが、すべてこちらのサイトに
載っているようですね
どうもありがとうごいざいました。
No.2
- 回答日時:
こんばんは。
こんな風にすれば出来ると思います。
A1: 2007/1/1
B1:
=DATE(YEAR($A$1),MONTH($A$1),15)-WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),6))
C1:
=DATE(YEAR($A$1),7,22)-WEEKDAY(DATE(YEAR($A$1),7,6))
No.1
- 回答日時:
対象月の1日の曜日をまず求める
月曜=0 日曜=6 になるようにしておく
第1月曜日まで何日足りないか求める(上の数値曜日を7から引く)
最初に求めた月の1日が月曜でない場合だけ上の値に更に7を足す
この値がその月の第2月曜にならないかな?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
【マクロ】数式を入力したい。...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】左のブックと右のブ...
-
vba テキストボックスとリフト...
-
エクセルの複雑なシフト表から...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
エクセルシートの見出しの文字...
-
Dir関数のDo Whileステートメン...
-
LibreOffice Clalc(またはエク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報