•  

助け合い

経理、労務、総務のことでわからないこと、利用者同士で助け合いを目的とした掲示板です。ルールを守ってご利用くださいませ。

勤続年数計算

質問 回答受付中

勤続年数計算

2007/07/13 23:39

nrkjmo

おはつ

回答数:4

編集

こんばんは。

社内で、勤続10年の社員に対して、表彰することになりました。
それで、経理のほうで、勤続年数の計算をすることになりました。
入社年月日から、10年経った方が対象なのですが、中には、産休や育休をとられた女子社員もいらっしゃって、その場合、その期間を差し引きして、計算することになりました。
まず、勤続年月数は、DATEDIF関数で求めました。

勤続年月数=CONCATENATE(DATEDIF(入社日,今月末日,"Y"),"年",DATEDIF(入社日,今月末日,"YM"),"ヶ月")

として、「○年○ヶ月」で算出しました。

次に、同じように、休暇期間を

=CONCATENATE(DATEDIF(休暇開始日,休暇終了日,"M"),"ヶ月",DATEDIF(休暇開始日,休暇終了日,"MD"),"日")

として、「○ヶ月○日」で算出しました。

勤続年月数「○年○ヶ月」から、休暇期間「○ヶ月○日」をマイナスして、実際の勤続年月数を求めたいのですが、なにか便利な方法はないでしょうか。
よろしくお願いいたします。

こんばんは。

社内で、勤続10年の社員に対して、表彰することになりました。
それで、経理のほうで、勤続年数の計算をすることになりました。
入社年月日から、10年経った方が対象なのですが、中には、産休や育休をとられた女子社員もいらっしゃって、その場合、その期間を差し引きして、計算することになりました。
まず、勤続年月数は、DATEDIF関数で求めました。

勤続年月数=CONCATENATE(DATEDIF(入社日,今月末日,"Y"),"年",DATEDIF(入社日,今月末日,"YM"),"ヶ月")

として、「○年○ヶ月」で算出しました。

次に、同じように、休暇期間を

=CONCATENATE(DATEDIF(休暇開始日,休暇終了日,"M"),"ヶ月",DATEDIF(休暇開始日,休暇終了日,"MD"),"日")

として、「○ヶ月○日」で算出しました。

勤続年月数「○年○ヶ月」から、休暇期間「○ヶ月○日」をマイナスして、実際の勤続年月数を求めたいのですが、なにか便利な方法はないでしょうか。
よろしくお願いいたします。

この質問に回答
回答一覧
並び順:
表示:
1件〜4件 (全4件)
| 1 |

1. Re: 勤続年数計算

2007/07/17 10:21

DISKY

すごい常連さん

編集

「○年○ヶ月」から「×ヶ月×日」を引くことは単位が違うのでできません。日数まで管理しようと正確に計算できませんので月単位までの計算としますね。(1年=12ヶ月であり、1年=365日ですが、1ヶ月=30日ではないため、どうやっても計算上誤差が生じます)

勤続年数=DATEDIF(入社日,今月末日,"Y")
勤続月数=DATEDIF(入社日,今月末日,"YM")
休暇年数=DATEDIF(休暇開始日,休暇終了日,"Y")
休暇月数=DATEDIF(休暇開始日,休暇終了日,"YM")
とそれぞれ2セルに分けて表示させるようにし、それぞれ差を取ればいいのですが、さらに一工夫必要になります。
実勤続年数=ROUNDDOWN(((勤続年数-休暇年数)*12+(勤続月数-休暇月数))/12,0)
実勤続月数=MOD((勤続年数-休暇年数)*12+(勤続月数-休暇月数),12)

○年、○ヶ月という表示にこだわりたいのであれば書式設定等で調整すればOKですので、ここでは割愛しておきます。

「○年○ヶ月」から「×ヶ月×日」を引くことは単位が違うのでできません。日数まで管理しようと正確に計算できませんので月単位までの計算としますね。(1年=12ヶ月であり、1年=365日ですが、1ヶ月=30日ではないため、どうやっても計算上誤差が生じます)

勤続年数=DATEDIF(入社日,今月末日,"Y")
勤続月数=DATEDIF(入社日,今月末日,"YM")
休暇年数=DATEDIF(休暇開始日,休暇終了日,"Y")
休暇月数=DATEDIF(休暇開始日,休暇終了日,"YM")
とそれぞれ2セルに分けて表示させるようにし、それぞれ差を取ればいいのですが、さらに一工夫必要になります。
実勤続年数=ROUNDDOWN(((勤続年数-休暇年数)*12+(勤続月数-休暇月数))/12,0)
実勤続月数=MOD((勤続年数-休暇年数)*12+(勤続月数-休暇月数),12)

○年、○ヶ月という表示にこだわりたいのであれば書式設定等で調整すればOKですので、ここでは割愛しておきます。

返信

2. Re: 勤続年数計算

2007/07/18 14:22

nrkjmo

おはつ

編集

DISKYさん、いつもありがとうございます。

「kemikemi」自宅より、「nrkjmo」で投稿しております。

単位が違うので、やはり、引き算することはできないのですね・・・
また、1ヶ月は、30日であったり、31日であったり、うるう年もあったりして、DATEDIF関数では、それを正確に計算することはできないのですね・・・

年数と月数で分けて、求めればよいのですね!

ちなみに、ROUNDDOWN関数とMOD関数、まだ使ったことがなくて、よく分からないのですが、その通りにやったら、求めれました。

実勤続年数=ROUNDDOWN(((勤続年数-休暇年数)*12+(勤続月数-休暇月数))/12,0)

勤続年数から休暇年数をマイナスして、なぜ12をかけるのか、勤続月数から休暇年数をマイナスして、なぜ全体を12でわって、,0なのか、できれば、わかりやすくご説明いただければ、助かります。

MOD関数も同様で、
実勤続月数=MOD((勤続年数-休暇年数)*12+(勤続月数-休暇月数),12)

勤続年数から休暇年数をマイナスして、なぜ12をかけるのか、勤続月数から休暇年数をマイナスして、なぜ,12なのか、お教えいただければ、助かります。

面倒なお願いですが、できれば、よろしくお願いいたします・・・


DISKYさん、いつもありがとうございます。

「kemikemi」自宅より、「nrkjmo」で投稿しております。

単位が違うので、やはり、引き算することはできないのですね・・・
また、1ヶ月は、30日であったり、31日であったり、うるう年もあったりして、DATEDIF関数では、それを正確に計算することはできないのですね・・・

年数と月数で分けて、求めればよいのですね!

ちなみに、ROUNDDOWN関数とMOD関数、まだ使ったことがなくて、よく分からないのですが、その通りにやったら、求めれました。

実勤続年数=ROUNDDOWN(((勤続年数-休暇年数)*12+(勤続月数-休暇月数))/12,0)

勤続年数から休暇年数をマイナスして、なぜ12をかけるのか、勤続月数から休暇年数をマイナスして、なぜ全体を12でわって、,0なのか、できれば、わかりやすくご説明いただければ、助かります。

MOD関数も同様で、
実勤続月数=MOD((勤続年数-休暇年数)*12+(勤続月数-休暇月数),12)

勤続年数から休暇年数をマイナスして、なぜ12をかけるのか、勤続月数から休暇年数をマイナスして、なぜ,12なのか、お教えいただければ、助かります。

面倒なお願いですが、できれば、よろしくお願いいたします・・・


返信

3. Re: 勤続年数計算

2007/07/18 16:12

DISKY

すごい常連さん

編集

あ、けみけみさんでしたか^^;

ROUND関数は端数処理に使用する関数で、ROUND関数は四捨五入、ROUNDUPは切り上げ、ROUNDDOWNは切り捨てとなります。ROUND(a,b)という関数は、aという数字をbという桁で四捨五入しなさいという意味です。bが0ということは、少数以下を四捨五入、となります。b=-1なら10未満、b=-2なら100未満、b=1なら少数第1位未満、となります。消費税の計算をさせるのに重宝しますw
MOD関数は割り算の余りを計算する関数ですね。MOD(a,b)でaをbで割った余り、という意味です。

どちらの式にも共通して出てくる「(勤続年数-休暇年数)*12+(勤続月数-休暇月数)」の意味ですが、総勤続年数から休暇年数を引いたもの、すなわち実勤務年数に12を掛けて、実勤務月数を足したものというのは、実勤務年数をすべて月数に換算しています。それをさらに12で割ることで年数に換算しています。2年6ヶ月ならトータル30ヶ月、10年3ヶ月ならばトータル123ヶ月となります。
それを12で割った数字は実勤務年数を表し、それを12で割った余りは月数を表します。すなわち式に出てくる「12」という数字は全て1年=12ヶ月という換算のために使用しています。
ここまでOKでしょうか?^^;

どうしてこういうまだるっこしいことをしているかと言うと、例えば総勤務年月数が2年3ヶ月として、休暇年月数が1年6月の場合、単純に年数=総勤務年数−休暇年数、月数=総勤務月数−勤務月数とすると実勤務年数=1年、実勤務月数=−3ヶ月となりわかりにくい表記になってしまいますね。
前回の式を用いると、2年3ヶ月=27ヶ月、1年6ヶ月=18ヶ月でその差を12で割ったものは0年、余りは9ヶ月となりますから、こっちのほうが表示したとき分かりやすくなります。 v(^^)

で、日数計算をなぜ省略したかというと1年=365日なのですが、1ヶ月=30日ではないので簡単には換算できなくなるからです。それに日数計算を含めたところで、10年に達すると計算される月が1ヶ月前後するだけで、それは費用が発生する月が1ヶ月前後するだけということですからまぁ無視しても大差ないであろうと判断した結果だったりします。
いや、多少誤差が出ても構わないから1ヶ月30日で換算したいんだ!ということであればそれぞれ年,月,日の3セルずつで管理し、年数*365+月数*30+日数で日数に換算し、さらにそれを365で割った答えが年数、365で割った答えをさらに30で割った答えが月数、余りが日数、としてもいいのですがややこしいですねw また数字によっては9年と12ヶ月と4日、なんて答えが出ないとも限らないのでお勧めはしないわけですが・・・

こんな感じでご理解いただけるでしょうか?
ちなみに自分もCONCATENATE関数やDATEDIF関数を使用したことがなかったので、いい勉強になりました^^

あ、けみけみさんでしたか^^;

ROUND関数は端数処理に使用する関数で、ROUND関数は四捨五入、ROUNDUPは切り上げ、ROUNDDOWNは切り捨てとなります。ROUND(a,b)という関数は、aという数字をbという桁で四捨五入しなさいという意味です。bが0ということは、少数以下を四捨五入、となります。b=-1なら10未満、b=-2なら100未満、b=1なら少数第1位未満、となります。消費税の計算をさせるのに重宝しますw
MOD関数は割り算の余りを計算する関数ですね。MOD(a,b)でaをbで割った余り、という意味です。

どちらの式にも共通して出てくる「(勤続年数-休暇年数)*12+(勤続月数-休暇月数)」の意味ですが、総勤続年数から休暇年数を引いたもの、すなわち実勤務年数に12を掛けて、実勤務月数を足したものというのは、実勤務年数をすべて月数に換算しています。それをさらに12で割ることで年数に換算しています。2年6ヶ月ならトータル30ヶ月、10年3ヶ月ならばトータル123ヶ月となります。
それを12で割った数字は実勤務年数を表し、それを12で割った余りは月数を表します。すなわち式に出てくる「12」という数字は全て1年=12ヶ月という換算のために使用しています。
ここまでOKでしょうか?^^;

どうしてこういうまだるっこしいことをしているかと言うと、例えば総勤務年月数が2年3ヶ月として、休暇年月数が1年6月の場合、単純に年数=総勤務年数−休暇年数、月数=総勤務月数−勤務月数とすると実勤務年数=1年、実勤務月数=−3ヶ月となりわかりにくい表記になってしまいますね。
前回の式を用いると、2年3ヶ月=27ヶ月、1年6ヶ月=18ヶ月でその差を12で割ったものは0年、余りは9ヶ月となりますから、こっちのほうが表示したとき分かりやすくなります。 v(^^)

で、日数計算をなぜ省略したかというと1年=365日なのですが、1ヶ月=30日ではないので簡単には換算できなくなるからです。それに日数計算を含めたところで、10年に達すると計算される月が1ヶ月前後するだけで、それは費用が発生する月が1ヶ月前後するだけということですからまぁ無視しても大差ないであろうと判断した結果だったりします。
いや、多少誤差が出ても構わないから1ヶ月30日で換算したいんだ!ということであればそれぞれ年,月,日の3セルずつで管理し、年数*365+月数*30+日数で日数に換算し、さらにそれを365で割った答えが年数、365で割った答えをさらに30で割った答えが月数、余りが日数、としてもいいのですがややこしいですねw また数字によっては9年と12ヶ月と4日、なんて答えが出ないとも限らないのでお勧めはしないわけですが・・・

こんな感じでご理解いただけるでしょうか?
ちなみに自分もCONCATENATE関数やDATEDIF関数を使用したことがなかったので、いい勉強になりました^^

返信

4. Re: 勤続年数計算

2007/07/19 00:47

nrkjmo

おはつ

編集

DISKYさん、ありがとうございました^^

とっても分かりやすいご説明でしたが、一回読んでも、まだ、自分の理解力がなく、よく分かりませんでした^^;
仕事と家事、子育ての合間に、じっくりと理解しながら、読ませていただこうかと思っています^^
DISKYさんは、経理のこともお詳しいですが、エクセルもこともお詳しいのですね〜
うらやましいです〜
わたしは、数学とか嫌いだったので、数字もダメだし、関数とか見ると、数学を思い出して、それだけで、拒絶反応です・・・
そんなわたしが経理をやっていてもよいのだろうか・・・という疑問もありますが・・・
それでも、日々、がんばっております^^;
分からないことがありましたら、また、おたすけ下さい。
よろしくお願いします!

DISKYさん、ありがとうございました^^

とっても分かりやすいご説明でしたが、一回読んでも、まだ、自分の理解力がなく、よく分かりませんでした^^;
仕事と家事、子育ての合間に、じっくりと理解しながら、読ませていただこうかと思っています^^
DISKYさんは、経理のこともお詳しいですが、エクセルもこともお詳しいのですね〜
うらやましいです〜
わたしは、数学とか嫌いだったので、数字もダメだし、関数とか見ると、数学を思い出して、それだけで、拒絶反応です・・・
そんなわたしが経理をやっていてもよいのだろうか・・・という疑問もありますが・・・
それでも、日々、がんばっております^^;
分からないことがありましたら、また、おたすけ下さい。
よろしくお願いします!

返信

1件〜4件 (全4件)
| 1 |
役に立った

0人がこのQ&Aが役に立ったと投票しています