プロが教える店舗&オフィスのセキュリティ対策術

どなたかご存知でしたらご教示いただければ幸いです。

一言でうまく説明出来ないので、例を記載させていただきます。
したい事は保有月数を表示させたいのですが、月の途中から保有した場合は一律0.5ヶ月と表示させたいのです。

2008年5月14日~2008年8月26日   の場合は3.5ヶ月
2008年7月4日~2008年8月31日    の場合は1.5ヶ月
2008年7年6日~2008年7月29日     の場合は0.5ヶ月

と、月中からスタートした場合は最初の月を一律0.5ヶ月、逆にendはend日が月中でも月末日でもend日を含む月は0.5ではなく1ヶ月とカウントしたいのです。

お手数をおかけいたしますが、
どうぞ宜しくお願い致します。

A 回答 (12件中1~10件)

例えば、スタート日がB2セル、エンド日がC2セルに入っているとして、以下の数式をD2などに入れてあげればいいかと思います。



 =IF(DAY(B2)=1,DATEDIF(DATE(YEAR(B2),MONTH(B2),1),DATE(YEAR(C2),MONTH(C2)+1,1),"m"),DATEDIF(B2,DATE(YEAR(C2),MONTH(C2)+1,1)-1,"m"))&IF(DAY(B2)=1,".0ヶ月",".5ヶ月")

仕組みは式を見れば読みとってもらえると思いますが・・・。
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみたのですが、本来2.5ヶ月になる場合は0.5ヶ月となってしまうのですが、残りの2ヶ月も含められたら嬉しいのですが、そんな関数はありますでしょうか?すみません。。。

お礼日時:2008/07/28 12:43

データが以下のように、なっていたとします。

[開始がA1]
開始        終了      月数
2008年5月14日2008年8月26日3.5
2008年7月4日2008年8月31日1.5
2008年7月6日2008年7月29日0.5
2008年7月1日2008年7月29日1.0

1.日付の表示は文字なっていますが、実データは 2008/5/14のように
  入力するものとします。

2.月数の列の書式設定の表示形式は、数値で、小数点以下の桁数は1
  と設定します。

月数の下のセルC2に以下の計算式をコピーしてから、計算式を下に
ドラッグしてコピーします。

=IF(A2*B2=0,"",IF(DAY(A2)=1,MONTH(B2)-MONTH(A2)+1,MONTH(B2)-MONTH(A2)+0.5))

計算がおかしかったら、連絡をお願いします。
    • good
    • 0
この回答へのお礼

ありがとうございます。

試してみたのですが、2.5となるべきところ、1とでてしまいます。

試した日程は

start dateが2008/7/23  で  End dateが2008/9/1  です。


どうぞ宜しくお願い致します。

お礼日時:2008/07/28 13:52

A1  2008年5月14日


B1   2008年8月26日

一例
=IF(OR(A1="",B1=""),"",TEXT(DATEDIF(A1,B1+1,"m")+IF(DAY(A1)=1,0,0.5),"G/標準"))
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみたのですが、2.5ヶ月と表示したいところが1.5ヶ月と表示されてしまいます。

すみません、またご教示いただけますでしょうか。
どうぞ宜しくお願い致します。

お礼日時:2008/07/28 13:39

これでいいのかな?


=(YEAR(B1)-YEAR(A1))*12+(MONTH(B1)-MONTH(A1)+((DAY(B1)>DAY(A1))/2
    • good
    • 0
この回答へのお礼

ありがとうございます。

でも、すみません。。。
2.5と表示されて欲しいところが2と表示されてしまいます。

試した例は2008/7/23~2008/9/1です。


どうぞ宜しくお願い致します。

お礼日時:2008/07/28 14:00

ANo.1のjo-zenです。



>試してみたのですが、本来2.5ヶ月になる場合は0.5ヶ月となってしまうのですが

⇒どういった日付を入れられたのか教えていただけますでしょうか。よろしくお願いします。
    • good
    • 0
この回答へのお礼

すみません、0.5ではなく2でした。
(他の方の回答を試みた結果と混ざってしまいました。。。すみません)

Start dateが2008/7/23  で End dateが2008/9/1です。

宜しくお願い致します。

お礼日時:2008/07/28 13:43

ANo.1&5のjo-zenです。



>Start dateが2008/7/23  で End dateが2008/9/1です。

⇒当方のパソコン(Excel)では、2.5ヶ月と表示されますよ。式は、再度貼り付けますが、

 =IF(DAY(B2)=1,DATEDIF(DATE(YEAR(B2),MONTH(B2),1),DATE(YEAR(C2),MONTH(C2)+1,1),"m"),DATEDIF(B2,DATE(YEAR(C2),MONTH(C2)+1,1)-1,"m"))&IF(DAY(B2)=1,".0ヶ月",".5ヶ月")

となります。

この回答への補足

すみません!!

これ、テキスト形式で表示されてしまうのですが、テキスト形式ではなく普通のナンバー表示にするにはどうすれば宜しいでしょうか??

補足日時:2008/07/28 14:37
    • good
    • 0
この回答へのお礼

すみませんでした!

理由はわからないのですが、使用しているPC(エクセル)がたまに故障するのですが、一度閉じて試みるとうまくいく場合が多いので、一度閉じてやってみましたところうまくいきました。

ご迷惑をお掛けしてすみませんでした。
ありがとうございました!!!

お礼日時:2008/07/28 14:10

Ano2のものですが、


7/23と9/1で、2.5と計算できていますよ。

この回答への補足

度々申し訳ございません。

先程の日付では大丈夫だったのですが
2008/7/25~2010/7/15等、他の日付だとうまくいきません。
上記期間だと0.5になります。

おわかりになりますでしょうか・・・?

補足日時:2008/07/28 14:44
    • good
    • 0
この回答へのお礼

すみませんでした。

理由はわからないのですが、使用しているPC(エクセル)がたまに故障するのですが、一度閉じて試みるとうまくいく場合が多いので、一度閉じてやってみましたところ、この関数もうまくいきました。

ご迷惑をお掛け致しました。
本当に助かりました。ありがとうございます!

お礼日時:2008/07/28 14:11

#4です。


=(YEAR(B1)-YEAR(A1))*12+(MONTH(B1)-MONTH(A1))+((DAY(B1)<>1)+(DATE(YEAR(A1),MONTH(A1)+1,0)<>A1)/2)-(DAY(B1)>DAY(A1))

上記で結果は
7月23日9月01日2.5
5月14日8月26日3.5
7月04日8月31日1.5
7月06日7月29日0.5
    • good
    • 0
この回答へのお礼

上記で結果が
2008/6/25~2009/10/15が17.5  (正しくは16.5)
2008/7/15~2010/7/15が25.5   (正しくは24.5)

となってしまいます。。

お礼日時:2008/07/28 15:57

=DATEDIF(A1,EOMONTH(B1,0),"m")+0.5+0.5*(DAY(A1)=1)


不具合な開始日あるいは終了日があれば、具体的な年月日をお知らせください。
    • good
    • 0
この回答へのお礼

ありがとうございます、全て正確に出来ました。

一点質問なのですが
手持ちの関数の本でEOMONTHを調べたのですが、

EOMONTH(開始日、月)
開始日から指定した月数だけ前(または後ろ)の最終日に対応するシリアル値を返す。

と説明してあるのですが、教えてくださいましたマクロの(B1,0),"m")部分がそれにあたるのですよね。いまいち本に書かれてある説明だけではロジックがわからなくて・・・
また0.5+0.5*(DAY(A1)=1の式の=1というのはどういう意味なのでしょうか?

質問をしてしまいまして申し訳ございません。
もし可能であればで構いませんが、今後の為に教えていただければ大変嬉しいです。

お礼日時:2008/07/28 17:10

ANo.1&5&6のjo-zenです。

補足します。

数値で出したいなら、以下のように式を変形してあげればOKだと思います。

D2セルなどに、

=(IF(DAY(B2)=1,DATEDIF(DATE(YEAR(B2),MONTH(B2),1),DATE(YEAR(C2),MONTH(C2)
+1,1),"m"),DATEDIF(B2,DATE(YEAR(C2),MONTH(C2)+1,1)-1,"m"))&IF(DAY(B2)=1,
".0",".5"))*1

全体に1をかけてあげることにより、文字列を数値に変換するやり方です。

 
    • good
    • 0

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