[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定した日までの勤続年数を計算したい』(yosi-k)
A B C D E
1 勤 続 年 数
2 入社日 何年 . 何ヶ月 指定日
3 H6.2.1 H17.5.31
Bに=DATEDIF(A3,E3,"y")+IF(AND(DATEDIF(A3,E3,"ym")<>0,D3=0),1,0)の計算式、Dに=MOD(DATEDIF(A3,E3,"ym")+IF(DATEDIF(A3,E3,"md")<1,0,1),12)の計算式
がはいっているのですが、
11.3ヶ月なのに11.4ヶ月になってしまうのはなぜですか?
>11.3ヶ月なのに の意図が分かりません。入社日や指定日を算入するかどうかにもよりますが、この 期間は11年3ヶ月30日ですよね? 上記の式では、1日以上の端数があると1ヶ月に繰り上げているようですが? (ちゅうねん)
ご提示の例では11年4ヶ月という結果を得た。 B3(だと思うが)の数式 AND関数部分のDATEDIF関数部分で 「月数が0以外、かつD3が0なら1年を加算する」という処理になっているが これは適正処理か? D3(だと思うが)の数式 IF関数部分のDATEDIF関数で「一月に満たない日数が発生していたら、一ヶ月加算する」 と言う処理になっているが、これは適正処理か? 見た限りではD3の「一月に満たない日数が発生していたら、一ヶ月加算する」という処理 のためであると推測できる。(みやほりん)
D3のMOD(DATEDIF(A3,E3,"ym")+IF(DATEDIF(A3,E3,"md")<1,0,1),12)最後のほうの
<1,0,1)のところが
>「一月に満たない日数が発生していたら、一ヶ月加算する」という処理
の意味なんですか?
一番外側の MOD(計算式,12) で「[計算式]の結果を12で除算した余り」を求めている。 [計算式]の部分 DATEDIF(A3,E3,"ym") A3とE3の期間、「y年m月d日」の m を求める部分、 この m にIF(DATEDIF(A3,E3,"md")<1,0,1)の計算結果を加算したもの。 IF(DATEDIF(A3,E3,"md")<1,0,1) では DATEDIF(A3,E3,"md")<1 、 つまり、「y年m月d日」の d が1より小さい(=0)のときは「0」にせよ、 「y年m月d日」の d が1以上の場合は1にせよ、とかかれている。 総じて 「『y年m月d日』のmを求め、このとき『y年m月d日』のdが1以上なら、先に求めたmに1加算せよ」 「上記の数値を12で除算した余りを最終的に求めよ」 (みやほりん)
みやほりんさんありがとうございました。
>「dが1以上なら」の数字を30にすれば ?? つまり、m に加算することはない、 すなわち、「日数での繰上処理をしない」が要件なら、 B3 =DATEDIF(A3,E3,"y") D3 =DATEDIF(A3,E3,"ym") とすれば十分。(みやほりん)
親切にありがとうございます!
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.