[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『有給休暇の付与日数の計算式』(ケー子)
お世話になります。
有給休暇の付与日数の計算式についてお尋ねします。
2004年4月1日入社の方は2005.4.1に11日、 2006.4.1に12日、 2007.4.1に14日、 2008.4.1に16日、 2009.4.1に18日、2010.4.1以降は毎年20日与えられます。
タイムカードの日付がN7:N37まで、11日から始まって翌月10日迄入っています(3月11日〜4月10日は4月分、4月10日〜5月10日は5月分…)。
セルW4に次の式をいれて付与日数を出すようにしました。
=IF(COUNTIF(N7:N37,"4/1"),CHOOSE(YEAR(N7)-2004,11,12,14,16,18,20),CHOOSE(YEAR(N7)-2004+1,11,12,14,16,18,20))
4月分はセルN7の年が2005年になると"11"となり5月分のタイムカードの付与日数が翌年(2006年)の付与日数の"12"になりうまくいくのですが、
N7を2006年にすると4月のシートが"14"になってしまい、なるべき数字の"12"になりません。
2006年にしても5月のシートで翌年(2007年)に与えられる数字の"14"で問題ないようです。
上の式のどこがおかしいのか判りません。ご教示お願いいたします。
上の式はCOUNTIF(N7:N37,"4/1") の部分がTRUEになることはないので、 必ず、CHOOSE(YEAR(N7)-2004+1,11,12,14,16,18,20)で算出されてしまいます。 別案の式ですが、以下の式で合ってますか。
=LOOKUP(N28,{38078;38443;38808;39173;39539;39904;40269},{10;11;12;14;16;18;20})
式中の5桁の数値は各年度の4月1日のシリアル値です。 38078 2004/4/1 38443 2005/4/1 38808 2006/4/1 39173 2007/4/1 39539 2008/4/1 39904 2009/4/1 40269 2010/4/1
(川野鮎太郎)
日付はシリアル値で入力されているものと思われますが、 =IF(COUNTIF(N7:N37,"4/1")・・・ この部分の"4/1"は、本年の"4/1"と認識されているようです。 したがって、来年になればこの式で正しい結果が得られると思います。 ためしに、システムの日付を来年にして試してください。 再計算した時点で、値が変わることが確認できると思います。 (Excel2003での確認)
ちなみに4月1日の判定の部分をを、=IF(MONTH(N28)=4,・・・のようにすれば、 システムの日付に関係なく計算できます。 ケー子さんのレイアウトでは、年度替りの月は必ず3月11日からスタートし、 N28セルに4月1日になりますね。 また、翌月はN28セルは常に5月2日になりますから、 この式でも大丈夫だと思いますがいかがでしょうか (sato)
失礼しました。 >COUNTIF(N7:N37,"4/1") の部分がTRUEになることはない これは間違いですね。 satoさんのおっしゃるように、今年の分と言う事でTrueになるようですね。
※ただ、CHOOSE関数を使う場合は、引数で条件を増やさないと、エラーが出ませんか? 2004/3/11以前や、2010/1/11以降の場合などです。
Debugツールというのは判りませんが、数式バーで該当部分をドラッグして ファンクションキー(F9)を押すことで、計算式の検証が出来ます。
(川野鮎太郎)
それもあってLOOKUP関数で代替案をお出ししたんですがね・・・(^_^A;
CHOOSE関数の引数で YEAR(N7)-2004 を最大6にすれば良いわけですから、 MIN(YEAR(N7)-2004,6) でいけると思います。
(川野鮎太郎)
あれ・・・? 上のほうで書いていましたけど、日にちのチェックがわかり難いってことで、 却下されましたけど・・・(^_^A;
(川野鮎太郎)
こう考えてください。 YEAR(N7)-2004 の場合、2010年で6になりますよね。 とすれば、 2009年以前は、5より少なくなり、2011年で6より大きくなる。
6より大きい数値がCHOOSEの引数に入るとエラーになるので、 MIN(6より大きい,6) で6が返ることになり、 2010年以降は、必ず6になるってことです。
(川野鮎太郎)
鮎太郎さま 6より大きい場合は、最小(Min)でも返る値が6と言うことでMinが使われているのだなと納得できました。大変ありがとうございました。(ケー子)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.