人気マンガがだれでも無料♪電子コミック読み放題!!

Excelで年数の計算をしています。
A1に1997/10/27,B1に2006/3/28,C1に「=DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"」を入力して「8年5ヶ月」と表示されます。
今回,D1に年数を小数点以下1桁で表示したいのですが,うまくいきません。計算すると8.4か8.5年だと思うのですが。
計算式を教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。


日付間の期間を求めるYEARFRAC関数と
少数以下切り捨てのROUNDDOWN関数の2つを使えばいいかと思います。

=ROUNDDOWN(YEARFRAC(A1,B1),1)&"年"

※officeExcel2007で検証済み
    • good
    • 1
この回答へのお礼

早速計算したところ,「#NAME?」という表示になって
しまいました。
私のソフトが2003で古いせいかも知れません。

回答ありがとうございました。

お礼日時:2009/01/20 09:42

D1: =DATEDIF(A1,B1,"Y")+ROUND(DATEDIF(A1,B1,"YM")/12+DATEDIF(A1,B

1,"MD")/30.4,1)
    • good
    • 0
この回答へのお礼

早速,計算してみたところ,回答者1,2さんとは
違う数値が所々ありましたので,今回は使用しません
でした。

回答ありがとうございました。

お礼日時:2009/01/20 09:40

DATEDIF関数にはバグがあることはご存知ですよね? まあ、YMしか


使わないなら大丈夫だと思いますが、了解はしておいた方が・・・。
http://pc.nikkeibp.co.jp/article/NPC/20070530/27 …

それはともかく、要は12ヶ月が1になればいいんですよね。だったら

=TEXT(DATEDIF(A1,B1,"Y")+DATEDIF(A1,B1,"YM")/12,"0.0")&"年"

って感じで良いんじゃないですか?
    • good
    • 1
この回答へのお礼

早速やってみましたら,数値が出ました。
今回の場合,精密な計算ではなかったので,
DATEDIF関数でも大丈夫でした。

でも,バグがあることは知らなかったです。
(なんで「関数」には入っていないのかなとは
思っていましたが)

回答ありがとうございました。 

お礼日時:2009/01/20 09:39

=DATEDIF(A1,B1,"m")/12


と式を切れて、書式の表示形式を標準か数値にしてみてください。
    • good
    • 3
この回答へのお礼

早速やってみましたら,数値がでてきました。
回答ありがとうございました。

お礼日時:2009/01/20 09:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで年齢表示の方法

社員リストを作成しております。 今日現在の年齢をDATEDIF関数で計算して表示していますが、最後の引数を"Y"とすると45歳とか48歳となってしまいます。 これを45.3歳とか48.7歳といったような小数点付きで表示させるにはどのような引数を利用すればよいか解らず困っています。どなたか詳しい方、助けて下さい。 よろしくお願いします。

Aベストアンサー

誕生日ぎりぎりあたりで微妙に数値がおかしくならないためには、
整数部にdatedif(出生日,today(),"Y")を使うのは避けられないで
しょうね。小数部の表記は「月数/12」なのか「日数/365.25」なの
か…いずれにしろdatedif関数で、第3パラメータを月数を使うなら
"YM"、日数を使うなら"YD"でしょう。

=datedif(出生日,today(),"Y")+datedif(出生日,today(),"YM")/12
みたいな感じ。

最後を12じゃなくて100で割ったら、45歳8ヶ月が45.08で32歳11ヶ月
が32.11になりますけどね。

QEXCELの年月変換について

小数点の年数を『何年何ヶ月』と変換したいのですが、
どういった関数や操作をすればいいのか分からないため、
質問いたします。

例をあげますと、
「1.5」の数値を、『1年6ヶ月』という表示にしたい、といった具合にです。

説明が不十分であれば、補足説明いたします。
また、それに関するお勧めサイトがあれば
重ねてお願いいたします。

Aベストアンサー

「1.5」の数値がA1に入っているとして、簡単に済ますなら
=INT(A1)&"年"&INT(MOD(A1,1)*12) &"ヶ月" でしょうか。

INTで1.5の整数部分「1」だけを取り出し年にしています。

MOD(A1,1)で小数点以下の値「0.5」を取り出し、12を掛けて月にしています。
そのままですと、「1.6」の時1年7.2ヶ月と、なってしまいますので、月数もINTして整数だけ表示しています。

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

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

Aベストアンサー

そりゃそうでしょう。計算対象が文字列扱いのデータなんですから、
エラーが出てアタリマエ、平均値が計算できワケがないです。

ですので、勤続年数の「数値」を持つセルを別に作る必要があります。
当然年/月のままじゃダメで勤続延べ何ヶ月という「月」の値にする
必要があります。ということで、上記のセルとは別に、

=DATEDIF(A1,TODAY(),"y")*12+DATEDIF(A1,TODAY(),"ym")

こうすれば、勤続延べ何ヶ月の数字が出てきます。この式を含むセル
についてAVARAGE関数で平均を取ってください。

で、出てくるのは勤続延べ何ヶ月ですから、こいつを12で割って「年」
余りを「月」にする必要があります。平均月が出たセルをB1として、

="平均"&INT(B1/12)&"年"&(B1-INT(B1/12)*12)&"ケ月"

こんな感じで表示できるはずです。
キモは「計算に使うセルと表示するセルを分ける」ということです。

計算に使うセルが表示上邪魔な場合は「書式」「列」「表示しない」
などで表示上隠す方法と、AA1~などの極端に離れたセルに記入して
おく方法などがあります。

そりゃそうでしょう。計算対象が文字列扱いのデータなんですから、
エラーが出てアタリマエ、平均値が計算できワケがないです。

ですので、勤続年数の「数値」を持つセルを別に作る必要があります。
当然年/月のままじゃダメで勤続延べ何ヶ月という「月」の値にする
必要があります。ということで、上記のセルとは別に、

=DATEDIF(A1,TODAY(),"y")*12+DATEDIF(A1,TODAY(),"ym")

こうすれば、勤続延べ何ヶ月の数字が出てきます。この式を含むセル
についてAVARAGE関数で平均を取ってください。

で...続きを読む

Q年数の小数点表記について

例えば経験年数などを表記するとき、2年3ヶ月を「2.3年」と表記している人がいますが、この表記方法は正しいのでしょうか。
私としてはとても違和感があってすっきりしないのです。
何故かと申しますと、時間の場合ならば例えば1時間30分を「1.5時間」と表記しますよね?
これならば1時間とその半分だから0.5時間を足した数ということで納得がいくのですが年数は12進法ですよね。これを小数点表記するのは何だかおかしい気がしてならないのです。2年3ヶ月ならまだしも2年11ヶ月は2.11年?になるのでしょうか・・・。
私は理数系は不得意なので理数系の得意な方からしてみれば下らないことかもしれませんが、どなたかご存知の方がいらっしゃればお教えくだされば幸いです。

Aベストアンサー

数学的には誤りです。

なぜそのような誤用が多いのでしょう。

おそらく、10進法が多い世の中で、60進法との誤用は少ないが、12進法は誤差が少ないために、「つい」小数表記してしまうのではないでしょうか。

小中学生にはあまり見かけない誤用ですが、数学の授業から離れて久しいということも、本来の小数の意味を忘れて、誤用する一因かもしれませんね。

Qエクセルで平均年齢や平均勤続年数を求めるには?

エクセルで複数の構成員の平均年齢や平均勤続年数を求めるにはどうしたらいいのでしょうか?できれば、何年何ヶ月何日まで出せるといいのですが。

Aベストアンサー

それぞれの年齢と勤続年数の列を、日付関数を使ってつくります。関数ボックスにはない「DATEDIF関数」です。
=DATEDIF(A1,TODAY(),"D") ※A1は、生年月日、入社年月日が入力されているセルに書き換えてください。
平均値は「AVERAGE関数」で計算しましょう。=AVERAGE(C1:C4)
セルの書式をユーザー定義で「yy"歳"mm"ヵ月"dd"日"」や「yy"年"mm"ヵ月"dd"日"」などお好みに設定してください。

余談ですが、DATEDIF関数の第3引数「D」は日数を指定しています。年数なら「Y」、月数なら「M」です。解説しているサイトがありますので、検索してみてください。あと、年齢計算は =DATEDIF(A1,TODAY()+1,"D") の方が自然なのかな?

QEXCELで○ヶ月を○年○ヶ月に変換したい。

EXCELで、例えば「430ヶ月を35年10ヶ月」に変換したいのですが、使える関数はありますか?又は、簡単な良い方法はありますか?

Aベストアンサー

=TEXT(DATE(0,430,1),"y年mmヶ月")
ですね。上記の式の430の所をセル参照
別解として
=INT(430/12)&"年"&MOD(430,12)&"ヶ月"

上記2つの式は12ヶ月で割り切れる場合の表示が異なります。
=TEXT(DATE(0,480,1),"y年mmヶ月")→39年12ヶ月
=INT(480/12)&"年"&MOD(480,12)&"ヶ月"→40年0ヶ月

Q勤続年数の平均値の求め方

こんにちは、エクセルについて教えてください。
ある会社での各社員の勤続年数の計算でA列に入社年月日、B列に本日の年月日があり、C列にAとBの期間(勤続年数)計算を
=DATEDIF(A30,B30,"Y")&"年" & DATEDIF(A30,B30,"YM") & "月"で
●年●月で表示させています。
さて、この各社員の勤続年数の平均を出すために通常のAvarage関数を使うと「ゼロで割りました」のメッセージが出て計算してくれません。勤務年数の平均を求める方法を教えてください。

Aベストアンサー

過去ログです。
エクセルで平均年齢や平均勤続年数を求めるには?
http://oshiete1.goo.ne.jp/qa3213296.html

QEXCEL 何年何ヶ月間を求める関数を教えてください。

EXCEL
よろしくお願いします。 

入社日がB1のセルに平成10年12月5日と入っています。
退職の日がC1のセルに平成16年5月15日と入っています。

勤務期間を何年間何ヶ月間(満年月)をD1に出したのですが
どのような関数を使えばよいのか教え下さい。

よろしくお願いします。

Aベストアンサー

=DATEDIF(B1,C1,"Y")&"年間"&DATEDIF(B1,C1,"YM")&"ヶ月間"

◆下の、URLも参考に見てください

参考URL:http://www.microsoft.com/japan/users/office_expert/200304/01.asp

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング