全社員の平均経過年月を求める方法

このQ&Aのポイント
  • 基準日を2008年6月1日とし、各人の入社後の経過年月を求めるためにDATEDIF関数を使用します。
  • 全社員の平均経過年月を求める際には、文字列のため数値を読み取ることができません。
  • 日数表示で平均経過年月を求めると、1ヶ月多く表示されるため、正確な計算方法をご紹介します。
回答を見る
  • ベストアンサー

経過年月の平均を求めたい

基準日を2008年6月1日とし、 各人、入社後の経過年月をDATEDIF関数で求めました。 式: DATEDIF(H5,$M$3,"Y")&"年"&DATEDIF(H5,$M$3,"YM")&"ヶ月" セルにはX年XXヶ月と表示されます。 ここから、全社員の平均経過年月を出そうとすると、 文字列のため数値を読みません。 次に、 式: DATEDIF(H5,$M$3,"D") セルにはXXXXと、数字のみ表示されます。 で日数表示し、平均経過年月を出すと、1ヶ月多く出てしまいます。 例: 4475日 → 12年3ヶ月のころ、12年4ヶ月と表示されてしまうのです。 というのも、セルの表示形式をユーザー設定「yy"年"mm"ヶ月"」で表示するようにしているからです。 アバウトな数字ではなく、きちんと計算できる何かいい方法はないでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>日数表示し、平均経過年月を出すと、1ヶ月多く出てしまいます。 日数から年月への変換はどうされていますか?「yy"年"mm"ヶ月"」だとおかしいような・・。 #「yyyy"年"mm"ヶ月"」にしてみるとわかりますが、1912年4ヶ月じゃないですか? 本来はDATEDIF(H5,$M$3,"M")で月数を求めておいて、その平均を12で割った商と剰余にするのがスジだと思います。   =INT(AVERAGE(K1:K5)/12)&"年"&MOD(AVERAGE(K1:K5),12)&"ヶ月"

korin121
質問者

お礼

ありがとうございます。 確かにyy"年"mm"ヶ月"だと西暦に変換されてしまいましたが、 2,3セルをひろって試したとき、実際の数字と大差なかったんです。 (もちろん、100近いセルの平均を出すと全く違う数字がでてしまいました。) 教えていただいた関数で、問題解決ができました。 ちなみに端数を切り下げる為、ROUNDDOWNと組み合わせました☆

その他の回答 (4)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.5

ANo.1です。 他の方の回答にもあるように「日数」を求めてしまうと、1900/01/01の経過日数による年月日になります。なので「月数の平均」という要求であれば、ANo.1で書いたように各個人別の月数を求めるべきだと思います。入社年月日が違えば日数が同じでも経過月数が違うこともあるわけですから。 で 月数の平均→年と月にばらす が普通じゃないかと思います。

korin121
質問者

お礼

再度、ありがとうございました。 教えていただいたやり方で、納得のいく答えが得られました! 関数やマクロ、書式設定などエクセルで出来る範囲を考えるだけじゃなく、 いかに簡潔にできるか、その考え方も磨いていくのも今後の題です・・・

noname#79209
noname#79209
回答No.4

#3です。 多くの方が誤解しているのですが、エクセルには日付、時刻の概念はあっても、 長さとしての年、月、日、時間の概念はありません。 書式設定で、「yyyy」「mm」「dd」は1900/1/1からの累計日数を日付として表示させているだけです。 4475を何年何ヶ月で表示するには365で割ったりその余りを出すしかありませんが、 閏年、大の月、小の月をどう考えるかを決めないと出せませんね。 日数で出さずに年*12+月で月単位で計算させる方が良いかもしれませんね。

korin121
質問者

お礼

おっしゃるとおり、年・月・日・時間の概念がないんですね・・ それに見合う関数がないか、と思って質問しました。 閏年まで正確に、となると、 今回他の方に答えていただいた関数でも狂いが出てきまね。 エクセルに前述の概念があればいいのですが・・! ともあれ、ありがとうございました。

noname#79209
noname#79209
回答No.3

> 4475日 → 12年3ヶ月のところ、12年4ヶ月と表示されてしまうのです。 これは当たり前のはなしで、4475は1912/4/1を示すシリアル値として働いているからです。 これを西暦年の下二桁と月で表示させているので、仕方ありません。

korin121
質問者

補足

そうなんです。 が、西暦と月が反映されているといえども、 正解に近い年数と月数が出るので、 アバウトな数字ならこれでいいかとも思ったのですが・・・ 西暦と経過年月の数字が近いことが驚きです。 一度、皆さんが言われているような処理をやってみます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

例えば、H5:H100を従業員範囲とすれば、SUMPRODUCT(DATEDIF($M$3,H5:H100,"Y"))で年数 SUMPRODUCT(DATEDIF($M$3,H5:H100,"YM"))で月数を計数できます。 よって、平均年月は、INT(全年数/従業員数)&"年"&INT(全月数/従業員数)&"月"ではだめでしょうか。 因みに従業員数はCOUNT(H5:H100)でカウントできます。

korin121
質問者

お礼

ありがとうございます。 セルを別にすると、平均で多少の誤差が生じてしまう為、 今回はNO.1の方の関数を使用します。 SUMPRODUCTを知らなかったので、今後の参考に勉強させていただきます☆

関連するQ&A

  • EXCEL 経過年数の平均を求めたい!

    エクセルのDATEDIFで経過月数、日数を計算しました。 関数は次のように入力して、Cに経過月日数を出しました。 (C5の場合) =DATEDIF(B5,A5,"M")&"ヶ月"&DATEDIF(B5,A5,"MD")&"日"     A       B     C 5  H17.5.18 H16.7.22  9ヶ月26日 6  H17.6.10 H16.11.1  7ヶ月9日 7  H17.6.18 H16.10.12  8ヶ月6日 8  H17.6.23 H17.1.28  4ヶ月26日 9  H17.8.5 H16.9.13  10ヶ月23日 10             ○○ヶ月○日 そこで、C10のセルに、経過月日数の平均を出したいのですが、 C列は文字列となっているため、計算式に使えません。 どなたか、C列の平均値を求める方法をご存知ないでしょうか? もしくは、経過月日数を他の方法で求めて、平均値を出せるように できませんでしょうか? 宜しくお願いいたします。

  • エクセルで経過年数の平均

    エクセルで、DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"と関数を使い、経過年数&月数を「○年○ヶ月」と計算するデータを作りました。 さらに、計算された経過年数&月数の平均を求めたいのですが上手くいきません。 どうすればいいでしょうか?よろしくお願いします。

  • エクセルの関数で平均年齢の出し方を教えてください。

    エクセルでTODAYを元に年齢を =DATEDIF(H5,$J$3,"Y")&"歳"&DATEDIF(H5,$J$3,"YM")&"ヶ月" のようにして○歳○ヶ月というようにセルに表示されるよう関数 で求めています。 この○歳○ヶ月のセル列の最後に平均年齢を求めたいのですが、 =AVERAGE(範囲)では求められないので どのようにすえば求められるのか教えていただけないでしょうか? 宜しくお願いたします。

  • 経験年数表示○年○ヶ月 式はどのように

    エクセルで経験年数を表示したいのです。 本日で何年何ヶ月経過を示したいです。 Windows XP エクセル2003 使用です。          雇入年月日 セル L12に   H23.2.4          経験年数 セル L13に   1年4ヶ月 としたいのです。 経験年数が半年の場合は L13 に 6ヶ月  ×0年6ヶ月 経験年数が1年の場合は  L13に  1年   ×1年0ヶ月 いまL13の式には =DATEDIF(L12,TODAY(),"Y")&"年"&DATEDIF(L12,TODAY(),"YM")&"ヶ月" と入れてあるのですが。。。 1年0ヶ月 と表示されてまして・・・ 改善式を教えて頂きたいです。 宜しくお願いします。

  • 勤続年数の平均の出し方を教えて下さい。

    エクセルで勤続年数の表を作成しました。 左のセルから 名前:生年月日: 年齢(=DATEDIF(E3,$I$1,"Y")&"歳"&DATEDIF(E3,$I$1,"YM")&"ヶ月"):入職日:勤続年数(=DATEDIF(G3,$I$1,"Y")&"年"&DATEDIF(G3,$I$1,"YM")&"ヶ月") という表です。 その中で勤続年数の平均を出したいのですが、 勤続年数を足して、人数で割るという形では駄目なようです・・・。 何か方法はないでしょうか? よろしくお願いします。

  • 勤続年数の平均を出したい

    エクセル2000で社員名簿を作っています。 平均勤続年数を出したいのですが、=AVERAGE(勤続年数の入ったセル一覧)としても答えが出ず、#DIV/0!となります。 ちなみに勤続年数は   =DATEDIF(E4,$F$2,"Y")&"年"&DATEDIF(E4,$F$2,"YM")&"ヶ月"     ※F2セルに今日の日付、E列に入社年月日が入っています という関数で出しており、セルの書式は「標準」です。 平均年齢は同じ方法で出せるので、不思議です。。。 よろしくお願いします。

  • 勤続年数の平均を求めたい時の関数

    エクセルで会社の従業員の勤続年数とその平均を求めたいです。 勤続年数のセルに =DATEDIF(A1,TODAY(),"y")&"年"&DATEDIF(A1,TODAY(),"ym")&"ケ月" といれて勤続年数を出してます。 それで次に従業員の勤続年数の平均を出したいのですが、AVERAGEを使うとエラー#DIV/0!が出ます。 どうすれば勤続年数とその平均が求められますか? どんな方法でも良いので教えて下さい!!非常に困ってます(ー_ー)!!

  • エクセルで年月期間を4桁表示したい・続

    別名で質問していたのですが、何故かログインできなくなったので改めてこちらで質問させてください(答えてくださった方に返事ができないのが心苦しいですが・・)。 エクセルで着任~退任期間の表を作成しています。 例えばA列が着任でH11.07.01 B列が退任でH13.06.30と入力したら C列に期間(年月)02.00と表示できるようにしたいのです。 ちょうど2年なら2を02.00、1年11ヶ月なら01.11と自動計算するには どういう式を使えばいいのでしょうか? 今までの回答から=datedif(a1,b1,"y")+datedif(a1,b1,"ym")*0.01が一番シンプルな式で4桁表示されるのですが、補足が必要です。 上記例は期間がちょうど2年ですが、01.11と表示されてしまいます。 もし着任がH11.07.10で退任がH13.07.09だと02.00、退任がH13.07.08だと01.11という風に、着任年月日から換算して最後の月が1日でも1ヶ月に満たない場合は0とみなしたいのです。 面倒で申し訳ありませんが、得意な方にご協力いただけたらありがたいです。よろしくお願いいたします。

  • 計算結果を()で括りたい。

    前回お世話になりました、gontamokaです。 お陰様で、誕生日から年齢をXX歳XXヶ月と出すことができました。 今、E1セルに2008/4/1と入れて、下の式で、 =DATEDIF(D8,$E$1,"Y")&(","&DATEDIF(D8,$E$1,"YM")&"") D8=昭和39年1月31日であれば、F8=44,2と出しています。 下のように変えると、F8=44,2)となりますが、 =DATEDIF(D8,$E$1,"Y")&(","&DATEDIF(D8,$E$1,"YM")&")") F8=(44,2)と表示させる方法はありますか? よろしくお願いします。

  • 経過年月日 の 関数について

    こんばんは。 お世話になります。 以下の関数で、○年○ケ月○日と言うように、 経過年月日を作りました。 =DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ケ月"&DATEDIF(A1,B1,"MD")&"日" このままエクセルの方に入力しますと、 『0年0ヶ月0日』と言う表記で出てきます。 『0年0ヶ月0日』と言う表記が、出ないような関数に手直ししたいのですが…。 可能でしたら、B1の部分を、 TODAY関数にしたいところでもあります。 長ったらしい関数になってしまうかもしれませんが、 教えていただけたら幸いであります。 よろしくお願い致しますm(__)m