- ベストアンサー
エクセル 日付(年月日)の合計を出したい
入居日 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日 という結果がほしいです。 説明が下手ですいません。関数で出来ますか?? おわかりの方教えてくださーい!
- みんなの回答 (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
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
二つの期間が(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") → 合算の満日数 で求められませんか。
お礼
ありがとうございました。