• ベストアンサー

EXCELでその月の土・日・祝祭日を引いてくる関数

タイトルどうりですが EXCELでその月の土・日・祝祭日を引いてくる関数はありませんか 出勤のシフト表を作りたいのですが、 例:A1のセルに1と入力すると、それは来年の一月で   C1~ に一月の土・日・祝日の日付をいれてくれる   C2~ に1行目の日付に対する 曜日(土・日・祭)と自動的に入力してくれる そのような 関数はありますか 教えてください

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

  • ベストアンサー
noname#204879
noname#204879
回答No.4

Sheet1   A  B C  D  E  F  G  H  I  J  K  L  M  N 1   1 2 2009   A B C … AD AE AF   AG   AH   AI 1  1 2 3 … 30 31   2008/12/23 火 天皇誕生日 2  1 2 3 …   31   2008/12/31 水 年末休暇 3              2009/01/01 木 元日 4              2009/01/02 金 年始休暇 …              …………… … …………… 18              2009/11/23 月 勤労感謝の日 19              2009/12/23 水 天皇誕生日 20              2009/12/31 木 年末休暇 21              2010/01/01 金 元日 22              2010/01/11 月 成人の日 23              2010/02/11 木 建国記念の日 24              2010/03/22 月 春分の日(3/21)の振替 Sheet2 において、 1.範囲 A1:A2 を“ユーザー定義”で d に書式設定 2.次の各セルにそれぞれ該当式入力して、此れを右方にズズーッと   (AE列まで)ドラッグ&ペースト   A1: =IF(MONTH(DATE(Sheet1!$A2,Sheet1!$A1,COLUMN()))=Sheet1!$A1,DATE(Sheet1!$A2,Sheet1!$A1,COLUMN()),"")   A2: =IF(A1="","",IF(OR(COUNTIF(holidays,A1)=1,MOD(A1,7)<2),A1,""))   ただし、holidays は範囲 AG1:AG24 に付けた名前(範囲名) Sheet1 に戻って、 3.セル C1 を“ユーザー定義”で d に書式設定 4.次の各セルにそれぞれ該当式入力して、此れを右方にズズーッと   (N列まで)ドラッグ&ペースト   C1: =IF(ISERROR(SMALL(Sheet2!$A2:$AE2,COLUMN(A1))),"",SMALL(Sheet2!$A2:$AE2,COLUMN(A1)))   C2: =IF(C1="","",IF(MOD(C1,7)<2,TEXT(C1,"aaa"),"祭")) 結果を下に示しておきます。 Sheet1   A  B C  D  E  F  G  H  I  J  K  L  M  N 1   1   1  2  3  4 10 11 12 17 18 24 25 31 2 2009   祭 祭 土 日 土 日 祭 土 日 土 日 土

tanosimie
質問者

お礼

あっ! 申し訳ありません。補足のところで1.はクリアできました。2.は12日 祭もでまいた。が 2.Sheet1に結果が出ましたが、C1のセルに3から始まってでます のところだけが 課題です いろいろ申し訳ありません 

tanosimie
質問者

補足

早速回答ありがとうございます いくつかわからない点がありました 1.A B C・・・1 2 3・・・AGの列に 天皇誕生日などの休日を入力するSheetは2でしょうか?? 2.Sheet1に結果が出ましたが、C1のセルに3から始まってでます 12日がでませんでした   C2のセルから曜日はきちんとでました 本当にお世話になります よろしくお願いします

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

WEEKDAY関数ですと曜日を数字で表示可能 曜日に換算するにはCHOOSE関数で。 まとめると A1に日付を入力し =CHOOSE(WEEKDAY(A1,2),"月","火","水","木","金","土","日") その日付の曜日表示、これは可能。 >その月の土・日・祝祭日を引いてくる関数はありませんか たとえば2009年1月の日曜日は4.11.18.25と4日有りますが 1つの引数に複数の結果を出す関数自体ありえません。 また祝祭日は、エクセルの基本関数には祝祭日を表示する関数自体ありません、現在日にち固定のものと第2月曜などの不定のものとあり、毎年変化しますのでそのデータを作成する必要が有ります。 祝祭日データー作成といくつかの関数を組み合わせれば実現可能かと思いますが、質問の表のイメージがつかめません。 こんな感じですか? 画像投稿できるのかな?

tanosimie
質問者

補足

早速回答ありがとうございます WEEKDAYとCHOOSE関数ですね  表のイメージは  回答者:mike Gさんが Sheet1の結果を出してくださっているとおりです。わかりにくい質問で申し訳ありません

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

参考にしてください エクセルでカレンダー http://kokoro.kir.jp/know/calendar1.html エクセル実用講座 -スケジュール表作成- http://www.dougamanual.com/blog/43/617/

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

この手の質問の場合、祝日が厄介です。 曜日はパソコンの日付のシステムありますので利用できますが、祝日については 別途、一覧表を作成する必要があります。ご希望とは違いますが、以下参考にしてみてください。 http://www.h3.dion.ne.jp/~sakatsu/holiday_topic.htm のHPで年を入れて祝日の一覧表を作成します。作成された一覧表を Sheet1にコピィ、貼り付けします。 Sheet2のA1に2009/1/1 と入れます。 A2セルに =IF(MONTH(A$1+ROW(A1))=MONTH($A$1),A$1+ROW(A1),"") と入れて下へコピィすると 一ヶ月のカレンダーが出来ます。 B1セルに =IF(A1="","",IF(WEEKDAY(A1,2)<6,"",A1)) 下へコピィで 書式はユーザー定義で aaaa とでもすると土日が表示されます。 C1セルに =IF(COUNTIF(Sheet1!A:A,Sheet2!A1),VLOOKUP(A1,Sheet1!A:C,3,FALSE),"") 下へコピィで祝日が表示されます。 A1セルの日付を変えるだけでそのつきのカレンダーになります。 後は、土日と祝日が重なった場合をどうするかご自身で決めてCOUNT関数などで祝日出すか、COUNTBLANK関数で出勤日数を出すかしてみてください。

関連するQ&A

専門家に質問してみよう