• 締切済み

エクセルでの月数の計算について

関数素人で困っております。 「2007/10/31」から「2008/4/30」の期間を「6」ヶ月と計算したいのですが、DATEDIF関数で計算すると「5」ヶ月になってしまします。 「2007/10/31」から「2007/11/30」だと「0ヶ月」になるところを「1ヶ月」と計算したいのですが・・・ どうしたらよいのでしょうか?

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 在庫経過として、何を基準にして、1ヶ月としているのか分からないです。棚卸し日が、末日という約束があるとする条件ですから、 このような数式ではどうでしょうか。 =DATEDIF(A1,B1-DAY(B1)+1,"M")+INT(DATEDIF(B1-DAY(B1),B1,"D")/DAY(DATE(YEAR(B1),MONTH(B1)+1,0))) 棚卸しが、末日に至らなければ、1ヶ月としない計算です。しかし、棚卸し日が、必ずしも、末日とは限りませんから、例えば、その月を、30日なり、29日と以下のように決めてしまう方法が考えられます。 =DATEDIF(A1,B1-DAY(B1)+1,"M")+INT(DATEDIF(B1-DAY(B1),B1,"D")/30) >例えば2007/10/31~2008/5/10なら6ヶ月でOKです。 ただ、このような、末日でもない条件では、たまたま、上記の計算でもうまくいっていますが、必ず、うまくいくとは限りません。 在庫のスパンが長い商品なら、あまり細かくやってもしょうがないですが、いずれにしても、やはり、日にちで取ったほうが無難ですね。それで、月数を出すなら、INT(日にち/30)の計算で、棚卸報告書を作ったほうが無難です。そうしたら、難しい計算は必要ありません。 例: =INT(DATEDIF(A1,B1,"D")/30) ..

bockwinkle
質問者

お礼

こんばんは。 丁寧な説明ありがとうございます。 さっそく会社で試してみようと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#176215
noname#176215
回答No.4

> 関数素人で困っております。 関数の玄人なんていませんよ。 > 「2007/10/31」から「2008/4/30」の期間を「6」ヶ月と計算したい > のですが 何故 そうなるのかを説明すべきです。例示が一個で条件の説明もない のでは「1足せば?」としか云いようがないです。 想像をたくましくした予想回答 =DATEDIF(A1-DAY(A1)+1,B1-DAY(B1)+1,"M") これで望んだ通りにならないなら 質問の補足が必要です。 というか説明し直した方がいいでしょうね。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルには期間計算は DATEDIF関数以外ないよ。まずDATEDIF関数の結果(指定により6種類もある)に、+1や-1して実現しないのかな。 そもそも2例の実例だけ挙げて質問するのは質問者の意図が伝わらない。この種の質問の場合、もっと場合分けして説明すべきだ。コンピュタの利用能力は、場合分けの切り分け能力だ。 意図によってはVBA(ユーザー関数)ででも使って(作って)、場合分けをふやし、年月日の数を使って計算しないといけないかもしれない。

全文を見る
すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

◆この式ならいかがでしょうか? =DATEDIF(EOMONTH(A1-1,0)+1,B1+1,"M")

bockwinkle
質問者

お礼

なんせド素人なもので・・・ 一度試してみます。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

求めたい月数の算出ルールがよく読み取れません DATEDIF関数は満月数を計算する関数です。質問の例だけなら  =DATEDIF(A1,A2,"M")+1 で良いようにも思いますが、例えば2007/10/31~2008/5/10なら何ヶ月と表示するのが期待する仕様ですか? 特異な例のみ挙げて質問されると、答えを誤る可能性が高いです。

bockwinkle
質問者

お礼

説明不足で申し訳ありません。 「2007/10/31」=入荷日 「2008/04/30」=ある月の月末 ランダムに入荷された商品がある月末時点で何ヶ月経過した在庫なのかを求めたい。 DATEDIF関数で計算すると・・・ 2007/10/29入荷~2008/4/30 6ヶ月 → OK 2007/10/30入荷~2008/4/30 6ヶ月 → OK 2007/10/31入荷~2008/4/30 5ヶ月 → 6ヶ月と計算したい(11月~4月)  2007/11/01入荷~2008/4/30 5ヶ月 → 6ヶ月と計算したい(11月~4月)  2007/11/02入荷~2008/4/30 5ヶ月 → OK 例えば2007/10/31~2008/5/10なら6ヶ月でOKです。 うまく説明できませんが、何となくご理解いただけますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで月数の計算2

    例えばA1に開始日、A2に終了日、A3に数式を設定して月数を計算します。月数は暦に従って計算し、ひと月未満の端数はひと月として計算します。この場合、初日を算入(計算の対象に入れる)して計算する場合、下記の数式のどこを修正すべきでしょうか? =IF(DATEDIF(A1,A2,"MD")=0,DATEDIF(A1,A2,"M"),DATEDIF(A1,A2,"M")+1)

  • エクセルで月数の計算

    例えば、2007/5/8をA1に2008/1/31をA2に入力してA3でその期間の月数を求めます。この場合暦に従って計算し、1ヶ月未満の端数が生じたときは1ヶ月として計算します。上記の日付の場合8ヶ月と端数が生じるので9となります。A3に設定する関数はどのようになるでしょうか?

  • エクセルでの経過日数計算

    エクセルで経過日数計算に「DATEDIF」関数を使用しています。 「DATEDIF」関数では、経過の年数のみとか日数のみでの表示になりますが、 それを「○年○ケ月と○日」と計算させるにはどのようにすれば 良いのでしょうか?

  • Excelで月の計算をしたい

    教えてください。 登録日から完了日まで何カ月たったか計算たいのですが、 たとえば      A        B      C 1   登録日      完了日    経過月 2 2009/ 1/10     2009/1/31   0か月 3 2009/ 1/10     2009/2/ 1   1か月 4 2009/ 1/10     2009/3/31   2か月 5 2008/12/10     2009/1/ 1   1か月 と、月を「またぐ」と1か月としたいのですが、 関数にあまり詳しくなく… MONTH関数を使って計算すると MONTH(B列)-MONTH(A列)で、C5が-11か月になってしまい、 DATEDIF関数だと DATEDIF(A列,B列,"m")でC3とC5が0カ月になってしまいます。 検索の仕方が下手で、回答にたどり着けず質問立ててしまいました。 申し訳ございませんが、ご教示お願いします。

  • エクセルでの年数、月数、日数の差引

    エクセルの日数等の計算についてです。 A1セルに「H20.10.15」の日付データ、 B1セルに「H1.4.1」の日付データを入力します。 C1セルにて、「=DATEDIF(B1,A1,"Y")&"年"&DATEDIF(B1,A1,"YM") &"ヶ月"&DATEDIF(B1,A1,"MD")&"日"」を入力し、A1とB1の間の期間 「19年6ヶ月14日」を得ました。 C1で得たこの「19年6ヶ月14日」にさらに期間を足したいのです。 例えば、A2セルに「1」、B2セルに「7」、C2セルに「19」を入力し、 「19年6ヶ月14日」に「1年7ヶ月19日」を足した期間値である 「22年2ヶ月3日」をD2セルに表示させる方法はありますか。 繰り上がり(13ヶ月→1年1ヶ月など)の処理をうまくやる方法が あればいいのですが。 どなたかよろしくお願いします。

  • Excel 複数期間の合計

    次の内容の計算ができるのでしょうか?excel関数に詳しい方ご指導お願いします。 dateif関数で、ある一定期間を計算しています。 例)1991/10/16(セルF4)~1995/11/15(セルG4)→4年0ヶ月 [DATEDIF(F4,G4,"y")&"年"&DATEDIF(F4,G4,"ym")&"ヶ月"] この期間(上記でいうと4年0ヶ月の計算式結果)が複数ある場合、期間の合計はどのように算出したらよいでしょうか。 ただ単純にsum関数を使うと[0]になってしまいます。 計算式が設定されているので、不可能なのでしょうか? よろしくお願いします。

  • 月数の計算

    月数の計算で「何ヶ月目」か計算したいのですが、どのように関数を入れればいいでしょうか? (例)始まりが2月の日にちの場合(2/2でも2/25でも)は、2月中は全て1ヶ月目と表示させていのです。3月になると2ヶ月目というふうに・・・ ご存知の方は宜しくお願いします。

  • 勤続年数(月数)の計算および定義について

    エクセルで退職金の計算をしようと思います。 条件: a) 勤続年数は暦日によって計算 b) 1ヵ年に満たない月数は月割で計算し、1ヶ月に満たない日数は切り捨てる c) 退職金=基本給x勤続年数x支給率 d) 3年以上勤続のものに支払われる。 質問1: 1)満年数の勤続年数の計算は下記の関数でただしいでしょうか? 関数:DATEDIF(入社日,退職日,"Y") 例:1989/3/20(入社)2009/10/31(退職) の場合、満年数=20 2)残りの満月数の計算は下記で正しいでしょうか? 満月数=条件bの”1ヶ月以下切り捨て”に相当 関数:DATEDIF(入社日,退職日,"YM") 例:上記の場合、満月数は7 3)上記の例の場合(入社日:1989/3/20 退職日:2009/10/31) 退職金=基本給x(20+7/12) x 支給率  で正しいでしょうか? 4)上記の関数でいくと下記のような場合は、2年と11カ月になります。 例:1989/9/30 2009/10/31  これは定義上、2年11カ月になるのでしょうか?(そうなると退職金が受けられない)。 それとも、関数自体が間違っているのでしょうか? 以上4点について、ご教授をお願いいたします。 お返答、お待ちしております。

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

    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)、あるいは最初の方法からからでも構いませんので、ご教授を頂きたいと思います。

  • Excel 関数で年数(期間)計算したいのですが

    Excel 関数で次のような年数(期間)計算したいのですが、どのようにすればできますか? 教えてください。1900年以前の計算です。 たとえば、現在、2011年6月2日 と1868年11月4日は何年あるいは何日たっているか、という 問題です。 datedif関数でもうまくいきませんでしたが、そもそも関数でやることは無理なんでしょうか?

専門家に質問してみよう