アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。

お世話になります。

以下の関数で、○年○ケ月○日と言うように、
経過年月日を作りました。

=DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ケ月"&DATEDIF(A1,B1,"MD")&"日"

このままエクセルの方に入力しますと、
『0年0ヶ月0日』と言う表記で出てきます。

『0年0ヶ月0日』と言う表記が、出ないような関数に手直ししたいのですが…。

可能でしたら、B1の部分を、
TODAY関数にしたいところでもあります。

長ったらしい関数になってしまうかもしれませんが、
教えていただけたら幸いであります。

よろしくお願い致しますm(__)m

A 回答 (3件)

ご質問の直接の回答:


=IF(OR(A1="",B1=""),"",DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ケ月"&DATEDIF(A1,B1,"MD")&"日")


もうちょっと工夫してみると:
=IF(A1="","",TEXT(DATEDIF(A1,TODAY(),"Y"),"0年;;;") &TEXT(DATEDIF(A1,TODAY(),"YM"),"0ヶ月;;;")&TEXT(DATEDIF(A1,TODAY(),"MD"),"0日;;;"))
    • good
    • 0
この回答へのお礼

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

とても参考になりましたm(__)m

お礼日時:2013/07/24 11:48

あの・・・ゴチャゴチャ考えずに



=B1-A1

これで書式設定すれば?

経過日数だけはこれで正確に出てきます。
問題はその「日数」を、どう「年月日」と解釈するかで、
DATEDIFのバグ(超有名です)もそれが遠因です。
    • good
    • 0

DATEDIF関数にはバグがありますので、扱いにはご注意を。


特に月末が絡んでいると・・
#1のを拝借して行った結果
2013/04/01 2013/04/30 29日
2013/04/01 2013/05/01 1ヶ月
2013/04/30 2013/05/31 1ヶ月1日
2013/05/31 2013/06/30 30日 
2013/04/30 2014/04/01 11ヶ月2日
2012/02/29 2013/02/28 11ヶ月30日

詳しくは、
http://www.geocities.jp/chiquilin_site/data/1005 …
など。
上記リンク先からたどれますが
角田さんがユーザー定義関数を公開されています。
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips05.htm
何を使うにせよ『仕様を固めて』置かないと混乱しますね。
    • good
    • 0
この回答へのお礼

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

参考にさせていただきますm(__)m

お礼日時:2013/07/24 11:48

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