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

入居日 1997/01/20
退去日 2000/08/15
期間  3年6ヶ月26日

関数 =DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"&(DATEDIF(A1,B1,"MD")&"日")

別のセルに上記と同じ関数で 期間 2年2ヶ月24日 と結果が入力されています。
期間同士を足すと 5年8ヶ月50日 となります。
しかし、表示は、12ヶ月、31日をMAXとしたいので 5年9ヶ月16日 という結果がほしいです。

説明が下手ですいません。関数で出来ますか??
おわかりの方教えてくださーい!

A 回答 (2件)

上記の関数だと最大値は


11ヶ月(0ヶ月があるため)
30日(0日があるため)
だと思いますがいいのでしょうか?

ユーザー定義関数を作りました。Alt+F11でBisualVasicEditorを起動して
標準モジュール(なければ「挿入」「標準モジュール」)に下記のVBAをコピーしてください。

Function DATESUM(RG)
Dim RC, WY, WM, WD
For Each RC In RG
If InStr(1, RC, "年") = 0 Then GoTo RCNEXT 'セルに年がない場合集計しない
If InStr(1, RC, "ヶ月") = 0 Then GoTo RCNEXT 'セルにヶ月がない場合集計しない
If InStr(1, RC, "日") = 0 Then GoTo RCNEXT 'セルに日がない場合集計しない
WY = WY + CInt(Left(RC, InStr(1, RC, "年") - 1)) '年集計
WM = WM + CInt(Replace(Mid(RC, InStr(1, RC, "年") + 1, 2), "ヶ", "")) '月集計
WD = WD + CInt(Replace(Mid(RC, InStr(1, RC, "月") + 1, 2), "日", "")) '日集計
RCNEXT:
Next RC
WM = WM + Int(WD / 31): WD = WD - Int(WD / 31) * 31 '日桁あふれ修正
WY = WY + Int(WM / 12): WM = WM - Int(WM / 12) * 12 '月桁あふれ修正
DATESUM = WY & "年" & WM & "ヶ月" & WD & "日"
End Function
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/11 08:05

二つの期間が(B1,B2)、(C1,C2)にあるとして



=DATEDIF(0,DATEDIF(B1,B2,"D")+DATEDIF(C1,C2,"D"),"Y") → 合算の満年数

=DATEDIF(0,DATEDIF(B1,B2,"D")+DATEDIF(C1,C2,"D"),"YM") → 合算の満月数

=DATEDIF(0,DATEDIF(B1,B2,"D")+DATEDIF(C1,C2,"D"),"MD") → 合算の満日数

で求められませんか。
    • good
    • 0

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