• ベストアンサー

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 ・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。 >基本は、日付マスターを持たないやり方で考えております。 一応、すべて祝日・祭日計算は、未来のものでない限りは計算で出ます。私は、最初に、VBAで作ってから、ワークシートの関数で自分で考えて作りました。日付マスターとはいっても、たかだか10数行を書き込む手間なのに、それナシにしたいというのは、それを計算で解くのとでは、ギャップが大きすぎます。少なくとも、祭日計算で、分からない計算部分を教えてほしいなら書けますが。 以前、ここで、VBAのユーザー定義関数を書いていた人がいましたが、チェックしてみて、綿密に細かく丁寧に作っていました。私もありますが、私のものは、著作権を主張したいので、そのすべてを公開するというのは好みません。 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=2631908 の#4 のNii さんという方のコードです。 それを使えば、 =OR((WEEKDAY(F1,2)>5),LEN(国民の祝日(F1,1)))*1 と出来ます。 アドインは、後々、邪魔になることがありますし、レジストリの記録が残ったりしますから、ユーザー定義関数で十分だと思います。

motsu2006
質問者

お礼

ご回答、ありがとうございます。 まだじっくりとURL先を拝見していないのですが、とても参考になりました。

その他の回答 (6)

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.7

すでに回答にあるように祝日に関する関数は無いので、 もし日付(祝日)マスターを作成されるのであれば、 こちらも参考になるのでは。 http://www.eva.hi-ho.ne.jp/ohtake/excel/calender2.htm

motsu2006
質問者

お礼

ご回答、ありがとうございました。 リンク先、参考にさせていただきます。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

アドイン使わないでも祝祭日の表を用意すれば可能です。 =OR((WEEKDAY(A1,2)>5),COUNTIF(祝祭日の範囲,A1))*1 で1か0になります。 月曜が祝日になるケースや、春分・秋分の日の計算はこちらを参照 http://koyomi.vis.ne.jp/

motsu2006
質問者

お礼

ご回答、ありがとうございます。 なるべくマスターや一覧表を使用しない方向で考えていたのですが、 なかなか無理そうですね。 URL、参考になりました。

  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.4

「春分の日」と「秋分の日」は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月曜日など曜日指定の祝祭日もあるので、大変なように思います。

motsu2006
質問者

お礼

ご回答、ありがとうございます。 (勤務中のためお礼が遅くなりました) 春分の日、秋分の日について、知りませんでした。 参考になりました。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.3

祝祭日は毎年変りますので何かの表を引く必要があります。 また、この表は毎年メンテナンスをする必要があります。 「祝祭日」を指定する場合は基本的に「マスター」が絶対 必要になる・・・と思って下さい。 土曜日と日曜日だけを引っ張り出すなら、excelのWeekday 関数があります。=weekday(日付)とすれば、日曜日が"1" 土曜日が"7"と出てきます。詳細はヘルプをどうぞ。 なお、アドインを使ってもいいなら、フリーソフトの 「Kt関数」を使えば祝日の算出も可能です。

参考URL:
http://www.h3.dion.ne.jp/~sakatsu/ktfunc_main.htm
motsu2006
質問者

お礼

ご回答ありがとうございます。 (勤務中のためお礼が遅くなりました) >毎年メンテナンスをする必要があります そうですね、私の中でもこちらで質問する前は年毎に更新する マスター(一覧表)を作成するしか思いつきませんでした。 それはなるべく避けたかったのですが。 残念ながら、フリーソフトを使用できる環境ではないのです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

土日の判定は以下のような関数で可能ですが、祝祭日は別途、祝祭日表を持たないと判定できないと思います。 =IF(OR(TEXT(A1,"aaa")={"土","日"}),1,0)

motsu2006
質問者

お礼

ご回答ありがとうございます。 (勤務中のため、お礼が遅くなりました) やはり無理そうですね。

  • ysko614
  • ベストアンサー率31% (103/329)
回答No.1

残念ながら祭日に対応する関数はありません。別途用意が必要です。 参考までにHPを記載しておきます。ごらん下さい。 祝日以外の土日であればWEEKDAY関数を使えば、表示させる事ができます。 =WEEKDAY(A1,1) とすればA1に今年の元旦が入っていれば、2が表示されます。 上記の場合、日曜日が1、月曜日が2土曜日が7という値が表示されます。 これを処理すれば、土曜日、日曜日と平日の区別はつきます。これと記載しましたページからWHATDAY関数を用いて、処理をおこなって下さい。

参考URL:
http://www.vector.co.jp/soft/win95/business/se189574.html
motsu2006
質問者

お礼

素早いご回答、ありがとうございます。 実は私もWEEKDAY関数と"何か"を組み合わせればできるのでは?と淡い期待を持っておりましたが不可能なようですね。 業務で使用するPCにはフリーソフトをインストールすることができないので、 せっかくリンクを貼っていただいたのですが申し訳ございません。 (個人的に活用させていただきます)

関連するQ&A

  • 限定された期間に祝祭日及び土日を除いたスケジュール

    WINDOWS XP EXCELL 2003です。 例えば 3月21日~4月20日  (B2~B23 ※ 2011年3月~4月です)で、 土日及び祝祭日を除いた日付を参照図のようにしたいのですが可能でしょうか。 もしも可能ならば 「B2」 にどんな数式を適用すればいいかご指導いただけませんか。 注 1 C列は 「祝日」という名のシートです。   2 B6 ~ B17 は非表示です。

  • エクセルのマクロで、こまっています。

    エクセル2000のマクロで、こんな作業をしたいのですが、 基本設定:「シート1」       グラフ(上半期)と、その元になる表(上半期)がある。       表は、月ごとの(シート3の)フラグ別で集計されている。      「シート2」       シート1と同じ内容で、下半期分がある。      「シート3」       シート1、2の元になる表があり、A列に日付、B列以降にフラグが数個あり、       コメントが続く。 希望動作:マクロを実行すると、シート3の表を、      実行日の年度の上半期、下半期、B列以降のフラグで、      フィルタをかけ、ヒットする件数をシート1、2に送る。 これだけのことなんですが、解らないことがあって止まっています。  (1)、今日の日付を取得し、その年度の上半期(4/1~9/30)    下半期(10/1~3/31)を取得する。    A列の日付は、(2002/11/15 18:45)という形式です。  (2)、フィルタをかけた後、ヒットした件数を取得する関数。 よろしくお願いします。

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • EXCELでカレンダーの祝祭日を表示する関数がありますか?

    EXCELでカレンダーを作成したのですが、祝祭日も自動的に表示させたいのですが、どのようにすればいいのでしょうか。 たとえば「A列;2008/3/20」であれば「B列;春分の日」と表示させたいのです。

  • エクセル グラフ 土日を表示させたくない

    わかりにくい説明ですいませんが 今月だったら     A    B    C    D    E    F 1  日付  5/11  12  13  14  15 2  件数    5    3   4   6   3 で、土日の13,14を表示させたくないので列を削除して、     A    B     C    D   1  日付  5/11  12  15 2  件数    5    3   3 で、この表でグラフを作った時に13日14日のところが空白(0件)で表示されてしまいます。 土日を表示させたくない場合はどうすればいいでしょうか? よろしくお願い致します。

  • エクセル2000で教えて下さい。

    エクセル2000で質問です シート1のA列に日付が入っています。 B列に東京、大阪・・・数種類の文字が入ります。 C列に数字が入力されています。 日々それぞれ入力されていく形になっています。 さらにシート2のA列に日付が入っています。 B列には予めすべて大阪と入力されています。 C列には数字が入るようになっているのですが 例えばシート1のセルA3に10月18日と入ってB3に大阪と入った時には C3に入った数字と同じ数字がシート2のC3に入力されるようにしたいのです。 シート2のC3と言うのはA3にシート1のA3と同じ日付が入って いるから隣のC3に入る形です。 上の場合もしA8に10月18日と入っていればC8にシート1のC3と 同じ数字が入るようにしたいのです。 シート1のB列に大阪以外の文字が入った場合は無視です。 大阪と入った場合のみです。 どなたか御教授下さい。 補足が必要なら申し付け下さい。

  • エクセルの計算

    質問させていただきます。 Aの列に飛び飛びでランダムの日付があり、Bの列に曜日が縦に並んでいます。 A列の日付を入力したら曜日が自動で出るようにB列に以下を入れました。 =IF(A1<>"",MID("日月火水木金土",WEEKDAY(A1),1),"") このとき、土曜は青、日曜は赤と条件をつけました。 そしてC列に人数、D列に合計金額の欄があり、人数×単価をDに入れました。 このとき、条件として土曜日曜はプラス1,000円となります。 IFとORで対処し、一日の計算はどうにかできました。 1期間の合計(平日は平日の欄、土日は土日の欄)を下に入れるのですが、上記に書いたとおり、日付はカレンダーではなくランダムで入っているので、土日だけの計算は手作業で計算させています。 これを土日は土日、平日は平日で計算させる方法はありませんでしょうか? たとえば土か日と記入されているものだけを集めて計算させるとか。 説明に不足があればどんどんご指摘下さい。

  • Excelで何日後かを出したいのですが

    いつもお世話になっています Win2000 Office2000です。 A1に日付を入れるとB1に何日後かを出すようにしたのですが、過去ログなどを見てもし機能的にどうにかなればと思い質問させて頂きました。 B1のセルには 「=A1+30」と入れ30日後が計算できるようにしてあります。ここでネックなのが30日後が土日祝日だった場合は前の平日に繰り上がることです。土曜日曜なら金曜日に、祝日ならその前日の平日にです。カウントする日数は土日も含むため、逆に条件付書式などで土日祝日の場合は色をつけるようにしたり、C1のセルに土日祝日だったらフラグが立つようにしたりとやり方が色々あるとは思いますが、できれば簡単にしたいので(条件付書式はメモリが少ないので避けたいんです。)もしよい方法をご存知でしたらご教授いただけたらと思います。 どうぞよろしくお願い致します。

  • (条件付書式)EXCELで土日の行を網掛けする条件

    (条件付書式)EXCELで土日の行を網掛けする条件 を教えてください。以下でやってもできませんでした。 (やったこと)B列は日付が入っています。 シートを全選択→条件付書式 =OR(WEEKDAY(B40)=7,WEEKDAY(B40)=1) →網掛け 結果、A、Bの列は期待通りなのですが、C列以降が全て網掛け されてしまいます。

  • Excelでの判断関数式

    以下のC,Dの人数を求める関数式を教えてください。 A列(曜日) "月"~"日"の全角1桁 B列(人数) 数字2桁 C列(平日人数) "月"~"金"の場合、Bの数字を移送入力 D列(土日人数) "土"OR"日"の場合、Bの数字を移送入力 宜しくお願いします

専門家に質問してみよう