外出自粛中でも楽しく過ごす!QAまとめ>>

期間から期間を引く計算方法を教えてください
○年○ヵ月○日から○年○ヵ月○日を引いて○年○ヵ月○日を表示する方法を教えてください。

たとえば、勤続年数が31年6ヵ月15日(A1)で休職期間が1年8ヶ月21日(A2)あった場合、実際に勤務についていた日数を祭日に関係なく、○年○ヵ月○日(A3)と表示させたい。
入社日  昭和52年9月16日
退社日  平成21年3月31日
在籍期間  31年6ヵ月15日

休職開始日 平成18年1月8日
休職終了日 平成19年9月29日
休職期間   1年8ヶ月21日

期間計算の方法はEXCELのDATEDIF関数で出してます。
期間同士を足したり引いたりする方法を教えてください。

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

A 回答 (3件)

DATEDIF関数のバグはご存知ですよね?


http://pc.nikkeibp.co.jp/article/NPC/20070530/27 …

日数計算の場合、このバグと同じ問題が常時付きまといます。

例えば、1ヶ月と20日から、1ヶ月と10日を引く場合、起点の月日次第で
答えは8日~11日まで変動します。コレをどう考えるかですね。
(例えば3月31日の1ヶ月と1日前は何日か、という問題がそうです)

ですので、この計算は、期間の定義を正確に行わないと算出できません
特に勤続年数などの「金額に直結する計算」の場合、定義の違いで金額
が変わってしまいますので重大な問題になります。計算式の提示はその
定義が確定してからです。

ちなみにこれらの定義を100%何とかする場合は、大概、VBAでコードを
書かないと計算できないような、複雑な計算になります。

この回答への補足

バグは知りませんでした。
1ヶ月を定義しないと無理なことがわかりました。
ありがとうございました。

補足日時:2009/04/03 14:06
    • good
    • 0

期間の前後から何年何ヶ月何日を引くことは起算日または終期をその分ずらせば可能でしょうが、期間の中で期間を差し引くことはできません。


やってみればわかりますがうるう年、大の月、小の月があるのでそんな計算はエクセルでなくともできません。
年数同士、月数同士を引く等で無理にやって出来なくはないでしょうが、実際に長い期間の方が短い期間の方よりも短く計算される、あるいはその逆の不都合が起き、意味のない数字になります。
なお、DATEDIF関数自体が不正確です。そのため、エクセルのヘルプにのせていないのです。

http://pc.nikkeibp.co.jp/article/column/20081118 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/03 14:23

単位が合わないので計算自体難しいと言うか無意味と言うか



1年は365日と366日が存在します
1月は28.29.30.31と4種類存在します

たとえば
>休職開始日 平成18年1月8日
>休職終了日 平成19年9月29日
>休職期間   1年8ヶ月21日
この求め方ですが確かに年、月、日だけをそれぞれ計算すれば
1年と8ヶ月と21日
になりますが、総日数で計算すると629日
仮に
休職開始を平成18年2月8日
休職終了を平成19年10月29日
とした場合、年月日だけで見ると例に挙げているのと同じ
1年と8ヶ月と21日
となりますが総日数は628日になってしまいます。
休職開始を平成18年3月8日
休職終了を平成19年11月29日
の場合は631日と日数計算だと開始日と終了日が異なると数日間の誤差が生じます。

はじめから日数だけで計算すれば、在籍期間から休職期間を引く事で実際の勤務日数を求める事は可能ですが、その日数からXX年YYカ月ZZ日と求める事自体あまり意味を成さないと言う事になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/03 14:23

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

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

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

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

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

Qエクセルで期間から期間を引く方法を教えてください

期間から期間を引く計算方法を教えてください
○年○ヵ月○日から○年○ヵ月○日を引いて○年○ヵ月○日を表示する方法を教えてください。

たとえば、勤続年数が31年6ヵ月15日(A1)で休職期間が1年8ヶ月21日(A2)あった場合、実際に勤務についていた日数を祭日に関係なく、○年○ヵ月○日(A3)と表示させたい。

Aベストアンサー

もう解っているようですが
正確な 数値ではありませんが 

入社日  昭和52年9月16日 から 休職開始日 平成18年1月8日 と
休職終了日 平成19年9月29日 から 退社日  平成21年3月31日 の期間を出し 足す
DATEDIF関数は 知っているようですから

または
=DATEDIF(DATE(1,8,21),=DATE(31,6,15),"Y")&"年"
&DATEDIF(DATE(1,8,21),=DATE(31,6,15),"YM")&"ヵ月"
&DATEDIF(DATE(1,8,21),=DATE(31,6,15),"MD")&"日"
あくまでも 正確ではないことを 承知の上でお願いします

Qエクセルで年月の合計の関数を教えてください。

エクセルで2つの日付から年月数を求める関数(=TEXT(DATEDIF(A1,BI,"Y"),"0年;;")&TEXT(DATEDIF(A1,B1,"YM"),"0ヶ月;;")で出た期間の合計を出す関数を教えてください。(たとえば,2年6ヶ月と1年3ヶ月を足し,3年9ヶ月となるように)
よろしくお願いします。

Aベストアンサー

=TEXT(DATEDIF(A1,BI,"Y"),"0年;;")&TEXT(DATEDIF(A1,B1,"YM"),"00ヶ月;;")
で月を2桁表示なら
=TEXT(SUMPRODUCT(SUBSTITUTE(SUBSTITUTE(E7:E8,"年",""),"ヶ月","")*1),"0年00ヶ月")
で3年09ヶ月になります。ただし12ヶ月以上になる場合に繰上げされません。

年=DATEDIF(A1,BI,"Y")と月=DATEDIF(A1,B1,"YM")を分けてもらえれば、
年=SUM(年の範囲)+INT(SUM(月の範囲)/12)
月=MOD(SUM(月の範囲),12)
で計算できます。
※「年」「ヶ月」はセルの書式設定の表示形式をユーザー定義で「0年;;」「0ヶ月;;」で表示してください。

Qエクセルで日数を年数に置き換えるには?

例えば、平成16年11月28日~平成23年12月10日までの日数を、「7、××年」と表示させるための、関数を使った計算式を知りたいのですが、お分かりの方がおられれば、よろしくお願いします。

Aベストアンサー

(1)365日を1年と考える
A1=H16.11.28
B1=H23.12.10
=(B1-A1)/365=7.04年

(2)実際の日数で経過日数を割る
=YEARFRAC(A1,B1,1)=7.03年

こんなところでしょうか。

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

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勤続年数の平均を求めたい時の関数

エクセルで会社の従業員の勤続年数とその平均を求めたいです。
勤続年数のセルに
=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指定した期間内での数値を合計する関数。

関数について教えて下さい。

SUMIF関数で条件に合うセル内の数値を合計するのは出来るのですが
その条件に更に条件を加えたいのですがやり方がわかりません。

下記の画像でD28セルに8/1~8/3までの間の海山商事さんの個数を
合計して表示させるにはどんな関数が入るでしょうか?

SUMIF関数で全期間の海山商事さんの個数を合計する事はできますが
期間を指定する関数がどうしてもわかりません。

初歩的な質問かもしれませんがよろしくお願いします。

Aベストアンサー

こんにちは。

8/3までの個数から8/1以前の個数を引けば8/1~8/3までの個数になります。

=SUMIF(B5:B20,"<=8/3",F5:F20")-SUMIF(B5:B20,"<8/1",F5:F20")

今回は8/1から始まっていて以前がないので、8/3までの個数を求めればSれが答えになります。

Qエクセルで複雑な退職金の計算をしたいのですが

Excel2007で次の退職金の計算をしたいのですがご教授願います。

起算日 A1
退職日 A2
在職期間 =DATEDIF(A1,A2,"y")&"年"&DATEDIF(A1,A2,"ym")&"ヶ月"&DATEDIF(A1,A2,"md")&"日"       ←この計算式で○年○月○日を計算しました。

その後次の計算が必要になります。
(1)在職年数に端数がある時は月割りで計算し、1ヶ月未満の端数は1ヶ月に切り上げる。
 端数日数を1ヶ月単位に切り上げ、○年○ヶ月を求めます。
(2)在職年月に基本給を掛けて、更に係数を掛けて退職金を求める。
 (○年+○ヶ月/12)×基本給×係数 となります。

そこで(1)をトライしてみましたが、(2)の方法がわからないので、(1)の検証もできません。
(1)の計算は次のように求めてみました。
 =DATEDIF(A1,A2,"y")&"年"&DATEDIF(A1,A2,"ym")+(DATEDIF(A1,A2,"md")>0)&"ヶ月"
この計算では在職期間が○年11ヶ月○日となった場合、求めた在職年数は○年12ヶ月となってしまい、年に繰り上がりません。従って(2)の方法に影響が出そうですが、(2)の方法自体がわからないのでお手上げ状態です。

(1)と(2)、あるいは最初の方法からからでも構いませんので、ご教授を頂きたいと思います。

Excel2007で次の退職金の計算をしたいのですがご教授願います。

起算日 A1
退職日 A2
在職期間 =DATEDIF(A1,A2,"y")&"年"&DATEDIF(A1,A2,"ym")&"ヶ月"&DATEDIF(A1,A2,"md")&"日"       ←この計算式で○年○月○日を計算しました。

その後次の計算が必要になります。
(1)在職年数に端数がある時は月割りで計算し、1ヶ月未満の端数は1ヶ月に切り上げる。
 端数日数を1ヶ月単位に切り上げ、○年○ヶ月を求めます。
(2)在職年月に基本給を掛けて、更に係数を掛けて退職金を求める。
 (○年+○ヶ月/12)×基...続きを読む

Aベストアンサー

度々の訂正で申し訳ありません。
回答No.14の訂正です。

誤 年数(整数) =DATEDIF(A1,A2,"y")+INT(DATEDIF(A1,A2,"ym")+ROUNDUP(DATEDIF(A1,A2,"md")/100,0)/12)
正 年数(整数) =DATEDIF(A1,A2,"y")+INT((DATEDIF(A1,A2,"ym")+ROUNDUP(DATEDIF(A1,A2,"md")/100,0))/12)

1組の括弧が抜けていました。

QExcel 複数期間の合計

次の内容の計算ができるのでしょうか?excel関数に詳しい方ご指導お願いします。

dateif関数で、ある一定期間を計算しています。

例)1991/10/16(セルF4)~1995/11/15(セルG4)→4年0ヶ月
[DATEDIF(F4,G4,"y")&"年"&DATEDIF(F4,G4,"ym")&"ヶ月"]

この期間(上記でいうと4年0ヶ月の計算式結果)が複数ある場合、期間の合計はどのように算出したらよいでしょうか。
ただ単純にsum関数を使うと[0]になってしまいます。
計算式が設定されているので、不可能なのでしょうか?
よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

現状のままで計算する方法です。
各期間をH4~に表示してあるとして、合計は、

=SUBSTITUTE(TEXT(SUMPRODUCT(--SUBSTITUTE(SUBSTITUTE(H4:H7,"年"," "),"ヶ月","/12")),"0年0ヶ月/12"),"/12","")

で出来ます。
範囲(H4:H7)は適宜変更して下さい。
ただ、No.1の方の方法の方がいいと思います。

なお、合計するそれぞれの期間は、まったく重ならないという前提です。
期間が重なる場合は、重複分を考慮するとかなり難しくなります。

QDATEDIF関数と普通の引き算による日数計算

7月25日(セルA1)から7月1日(セルB1)までの日数を計算する場合、B1-A1で日数は出てくるようなんですが、例えば月を跨いだ場合、誤差は出てくるのでしょうか?(閏年や、月ごとの総日数の違いなどにより)

日数計算の場合、DATEDIF関数というものもあるようなのですが、これを使うと日数がマイナスになってしまう場合、エラーになってしまうようです。

後者の方が正確であるならば、DATEDIF関数を使いたいんですが、その場合、引き算の結果がプラスになる場合、マイナスになる場合が混在しているデータで使用する場合、どのような計算式を入力すればよいのかが分かりません。

どなたか御存知の方、よろしくお願いします。
ちなみに、単なる引き算で誤差がでないようでしたら、引き算で処理したいと思っています。

Aベストアンサー

用途によりますが、単純な日数計算なら基本的には誤差は出ないと思いますよ。
Excel内では、1900年1月1日を1として、1日ごとに1増える計算になっていますので。
ようするに、数字同士の引き算ですからね。

閏年は計算に入っていますし、月ごとの総日数も関係ないですし。

DATEDIFを使うなら、IF関数で大きさを比べて使ってみてはいかがでしょうか?


人気Q&Aランキング