- ベストアンサー
Excel 土日祝祭日の判断
よろしくお願いします。 シート上、A列に日付が並んでいます。 B列に、A列の日付が平日の場合 = 0 A列の日付が土日祝祭日の場合 = 1 といった風にフラグを立てたいのですが、やり方を教えていただけますでしょうか? 基本は、日付マスターを持たないやり方で考えております。 A(日付) B(土日祝祭日フラグ) 1 2007/1/1 1 2 2007/1/2 0 3 2007/1/3 0 4 2007/1/4 0 5 2007/1/5 0 6 2007/1/6 1 7 2007/1/7 1 ・・・
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >基本は、日付マスターを持たないやり方で考えております。 一応、すべて祝日・祭日計算は、未来のものでない限りは計算で出ます。私は、最初に、VBAで作ってから、ワークシートの関数で自分で考えて作りました。日付マスターとはいっても、たかだか10数行を書き込む手間なのに、それナシにしたいというのは、それを計算で解くのとでは、ギャップが大きすぎます。少なくとも、祭日計算で、分からない計算部分を教えてほしいなら書けますが。 以前、ここで、VBAのユーザー定義関数を書いていた人がいましたが、チェックしてみて、綿密に細かく丁寧に作っていました。私もありますが、私のものは、著作権を主張したいので、そのすべてを公開するというのは好みません。 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=2631908 の#4 のNii さんという方のコードです。 それを使えば、 =OR((WEEKDAY(F1,2)>5),LEN(国民の祝日(F1,1)))*1 と出来ます。 アドインは、後々、邪魔になることがありますし、レジストリの記録が残ったりしますから、ユーザー定義関数で十分だと思います。
その他の回答 (6)
- nobu555
- ベストアンサー率45% (158/345)
すでに回答にあるように祝日に関する関数は無いので、 もし日付(祝日)マスターを作成されるのであれば、 こちらも参考になるのでは。 http://www.eva.hi-ho.ne.jp/ohtake/excel/calender2.htm
お礼
ご回答、ありがとうございました。 リンク先、参考にさせていただきます。
- mshr1962
- ベストアンサー率39% (7417/18945)
アドイン使わないでも祝祭日の表を用意すれば可能です。 =OR((WEEKDAY(A1,2)>5),COUNTIF(祝祭日の範囲,A1))*1 で1か0になります。 月曜が祝日になるケースや、春分・秋分の日の計算はこちらを参照 http://koyomi.vis.ne.jp/
お礼
ご回答、ありがとうございます。 なるべくマスターや一覧表を使用しない方向で考えていたのですが、 なかなか無理そうですね。 URL、参考になりました。
- Mr_Holland
- ベストアンサー率56% (890/1576)
「春分の日」と「秋分の日」は2年後以降は確定していないことはご存知ですか? http://ja.wikipedia.org/wiki/%E6%98%A5%E5%88%86%E3%81%AE%E6%97%A5 http://ja.wikipedia.org/wiki/%E7%A7%8B%E5%88%86%E3%81%AE%E6%97%A5 官報によって告示されてから決まるもので、年によってずれます。 天文計算によって求められた春分や秋分からは外れたことがないようなので、もしその計算をエクセル内でやれるとしたらいいのですが。 ほかにも日付固定ではなく、第x月曜日など曜日指定の祝祭日もあるので、大変なように思います。
お礼
ご回答、ありがとうございます。 (勤務中のためお礼が遅くなりました) 春分の日、秋分の日について、知りませんでした。 参考になりました。
- FEX2053
- ベストアンサー率37% (7995/21382)
祝祭日は毎年変りますので何かの表を引く必要があります。 また、この表は毎年メンテナンスをする必要があります。 「祝祭日」を指定する場合は基本的に「マスター」が絶対 必要になる・・・と思って下さい。 土曜日と日曜日だけを引っ張り出すなら、excelのWeekday 関数があります。=weekday(日付)とすれば、日曜日が"1" 土曜日が"7"と出てきます。詳細はヘルプをどうぞ。 なお、アドインを使ってもいいなら、フリーソフトの 「Kt関数」を使えば祝日の算出も可能です。
お礼
ご回答ありがとうございます。 (勤務中のためお礼が遅くなりました) >毎年メンテナンスをする必要があります そうですね、私の中でもこちらで質問する前は年毎に更新する マスター(一覧表)を作成するしか思いつきませんでした。 それはなるべく避けたかったのですが。 残念ながら、フリーソフトを使用できる環境ではないのです。
- merlionXX
- ベストアンサー率48% (1930/4007)
土日の判定は以下のような関数で可能ですが、祝祭日は別途、祝祭日表を持たないと判定できないと思います。 =IF(OR(TEXT(A1,"aaa")={"土","日"}),1,0)
お礼
ご回答ありがとうございます。 (勤務中のため、お礼が遅くなりました) やはり無理そうですね。
- ysko614
- ベストアンサー率31% (103/329)
残念ながら祭日に対応する関数はありません。別途用意が必要です。 参考までにHPを記載しておきます。ごらん下さい。 祝日以外の土日であればWEEKDAY関数を使えば、表示させる事ができます。 =WEEKDAY(A1,1) とすればA1に今年の元旦が入っていれば、2が表示されます。 上記の場合、日曜日が1、月曜日が2土曜日が7という値が表示されます。 これを処理すれば、土曜日、日曜日と平日の区別はつきます。これと記載しましたページからWHATDAY関数を用いて、処理をおこなって下さい。
お礼
素早いご回答、ありがとうございます。 実は私もWEEKDAY関数と"何か"を組み合わせればできるのでは?と淡い期待を持っておりましたが不可能なようですね。 業務で使用するPCにはフリーソフトをインストールすることができないので、 せっかくリンクを貼っていただいたのですが申し訳ございません。 (個人的に活用させていただきます)
お礼
ご回答、ありがとうございます。 まだじっくりとURL先を拝見していないのですが、とても参考になりました。