日付を取得する
年・月・日を指定して日付型にするDate関数
を使えばできると思います。
Date関数は例えば=Date(2017,12,24)
とすると2017/12/24
という日付を返してくれます。
また=Date(2017,12 + 1,1)-1
のように記述すると2017/13/01
を2018/01/01
と認識し、そこから1日引いた2017/12/31
を返してくれるという、割と無茶も聞いてくれる関数です。
しかし、年・月・日はそれぞれ数値で指定する必要があるため、プルダウンリストの作り方や月の入力でもこれを考慮してあげる必要があります。
まず年選択のプルダウンリストについて。
これは2018~2022の範囲とのことですが、このとおりの数値を選択させているのなら大丈夫です。
もし"2018年"~"2022年"のように数値以外の文字列を含んでいるようでしたらそのままでは利用できません。
この場合、リストの選択値は2018~2022の数値としてください。
後ろに"年"を付けたい場合は、セルの書式設定を####"年"
とすればセル上には2018年
のように表示されます。
次に月の入力です。
これは提示いただいたイメージでは"4月"、"5月"のように文字列で入力されているように見えます。
これもセルへの入力は数値の4だけを入力し、書式設定で##"月"
とすればよいでしょう。
あとは=DATE($B$4, $C5, 1)
のように記述すればとすれば2017/4/1
といった日付が取得できます。
祝日について
上記で各月の期間開始日と終了日(1日と末日)をつくり出すことはできそうです。
次に解決しなければならないのは日数計算です。
しかしこれには祝日を把握する必要があります。
日本の祝日は日曜日と重なった場合翌日に繰り越したりしますし、春分の日や秋分の日などは天文学から日付が決まるので固定日ではありませんので、毎年同じ日付が祝日にはなりません。
この祝日の日付を一覧にしたデータをどこかに用意しておく必要があるのです。
自分でこれを作るのは大変なので「excel 祝日一覧」といったキーワードでweb検索すると有志が作ってくれたものが見つかります。
私はよくこちらのサイトさんの情報を使わせていただいています。
⇒日本の祝日一覧|Excelリファレンス - エクセルの神髄
日数の算出
こうして祝日一覧が用意できれば、土日祝を除いた日数を取るのは簡単です。
まずフルタイム(週5勤務)の場合、ワークシート関数にNetworkDays関数
というものが使えます。
これは期間を入力すると土日を除いた日数を返してくれるというものです。
さらに祝日テーブルを指定すると、土日祝を除いた日数を返してくれるのです。
例えば祝日一覧シートのA列に2017年の祝日を列記しておき、=NetworkDays("2017/11/1", "2017/11/30", 祝日一覧!A$1:A$50)
のような式を記述すると、全30日から土日祝を除いた20日という日数を返してくれます。
もうひとつの週4勤務の方はNetworkDays.INTL関数
というものが使えます。
これは先のNetworkDays関数を拡張したような関数で、指定の曜日を休日として扱うことができます。
もちろん祝日テーブルの指定も可能です。
休日とする曜日の指定は、あらかじめ用意されたパターンにあるものなら数値指定もできますが、週休3日の場合は文字列での指定となります。
休日は"1"、休日でなければ"0"の文字を月火水・・・日の順で並べた文字列が休日パターンの文字列となります。
(例えば木・土・日が休日なら"0001011"となります。)
これをNetworkDays.INTL関数の第3引数として指定します。
例えば=NetworkDays.INTL("2017/11/1", "2017/11/30","0001011", 祝日一覧!A$1:A$50)
のような式を記述すると、全30日から木土日祝を除いた16日という日数を返してくれます。
ちなみに=NetworkDays.INTL("2017/11/1", "2017/11/30","0000011", 祝日一覧!A$1:A$50)
のような式を記述すると、全30日から土日祝を除いた20日という日数を返してくれますので、フルタイム用としても使用可能です。
祝日カレンダーの作成や、休日パターン文字列の作成など、少し面倒な部分がありますががんばってみてください。
参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/08 10:19 編集
2017/11/09 01:09
2017/11/09 01:37 編集
2017/11/09 01:37
2017/11/09 01:40
2017/11/09 01:47
2017/11/09 01:58
2017/11/09 02:17
2017/11/09 02:28
2017/11/09 02:31
2017/11/09 02:36
2017/11/09 02:43 編集
2017/11/09 02:47
2017/11/09 02:49
2017/11/09 03:08
2017/11/09 03:28
2017/11/09 07:35
2017/11/09 07:38
2017/11/09 07:57
2017/11/09 09:00
2017/11/09 09:21
2017/11/09 10:37
2017/11/10 00:23
2017/11/10 00:28
2017/11/10 07:37 編集
2017/11/10 09:33