[[20050627112343]] 『指定した日までの勤続年数を計算したい』(yosi-k) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定した日までの勤続年数を計算したい』(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の「一月に満たない日数が発生していたら、一ヶ月加算する」という処理
のためであると推測できる。(みやほりん)

この関数の末部分の意味がわかってなくて使っているので、質問がおかしくなりました。すみませんm(__)m

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にすれば解決しそうです。

みやほりんさんありがとうございました。


 >「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.