[[20080117114233]] 『datedif関数を使って月数計算(両端入れ)』  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『datedif関数を使って月数計算(両端入れ)』

いつもこの掲示板にはお世話になっております。
よろしくお願いします。

2つの日付間の月数を計算したいので,
A1(2007/4/30) B1(2007/10/1)でC1に =datedif(A1,B1,"M")
と式を入れ,月数を計算できるようにしました。

ところが月数計算の条件が,
「開始の日の属する月」を1月と数え,
「終了の日の属する月」も1月と数える,というものなのです。
この場合,4・5・6・7・8・9・10月の7月となる数え方です。

Cにはどのような式を入れたら良いのでしょうか,
どなたか知恵を授けてください。

(ぽき)


 汎用性はありませんが、
 =(YEAR(B1)-YEAR(A1))*12+MONTH(B1)-MONTH(A1) +1
 でどうしょうか。
 (Mook)

 =DATEDIF(EOMONTH(A1,0),EOMONTH(B1,0),"M")+1

 で希望通りになりますか?
 (sato)


 こんにちは〜♪

 日付は苦手なんですが。。。

 =DATEDIF(DATE(YEAR(A1),MONTH(A1)-1,1),B1,"m")

 いかがでしょうか。。?

 。。。Ms.Rin〜♪♪


 こんな方法も。
 =SUMPRODUCT(TEXT(A1:B1,"y m!/!1!2")*{-12,12})+1
 (ROUGE)

皆さま,早速のご回答をありがとうございました。
どの方法も,読んでなるほどとうなずかせていただきました。
eomonth関数は知らなかったので調べてみて,勉強になりました。

今回は最終的に何年何ヶ月,という表示に持って行きたいので,
eomonth関数を使うことにします。

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

(ぽき)


 >eomonth関数を使うことにします
 ↓
 satoさんのこれですか→ =DATEDIF(EOMONTH(A1,0),EOMONTH(B1,0),"M")+1

 5/31→11/30 のケースは大丈夫ですか?(他の人の式と結果が異なりますが)

 (半平太)

ROUGE様・・斬新な回答でビックリ!です。なるほど・・。

半平太様・・本当,5/31→11/30のケースだけ結果が異なりますね。
なぜかしら。もう少し考えてみます。
理由がわかれば教えてください。


5/31→6/30でもだめなようです。

31日の月→30日の月がだめみたいです・・。

(ぽき)


 DATEDIFはいろいろと問題をはらんだ関数です。(ROUGE)
http://pc.nikkeibp.co.jp/article/NPC/20070530/272938/?P=3


 >半平太様・・本当,5/31→11/30のケースだけ結果が異なりますね。
 >なぜかしら。もう少し考えてみます。理由がわかれば教えてください。 

 それぞれの末日同士を計算していますので、
 末日同士が(大→小)のケースでは、Datedifの仕様で1か月少なく計算されるからです。

 ちなみに私の案(Rinさんと同じ考え方です)
      ↓
 =DATEDIF(A1-DAY(A1)+1,B1,"M")+1

 (半平太)

 =IF(A1<B1,DATE(YEAR(B1),MONTH(B1),5)-DATE(YEAR(A1),MONTH(A1),1),"")

                   結果  【書式 m"月")
 5月3日	5月3日	
3月1日	3月2日	1月
4月30日	5月31日	2月
5月31日	6月1日	2月
1日でも月が変われば 2
同じ月なら 30日あっても 1

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.