- ベストアンサー
エクセル2003で日付を計算する方法
- エクセル2003を使用して日付を計算する方法についてご質問です。特に、指定した日付から3ヶ月後の日付を求める方法についてお伺いします。
- 現在、エクセル2003のセルV34に日付が入力されており、この日付から3ヶ月後の日付を別のセル(I122)に表示させています。しかし、以下の条件に従って日付を計算したいと考えています。
- V34に入力された日の値が1~15の場合には、翌々月の最終日を表示させたいです。一方、V34の日の値が16以降の場合には、3ヶ月後の最終日を表示させたいです。このような計算方法を実現するにはどうすれば良いでしょうか?お知恵をお貸しください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=IF(DAY(V34)<=15,EOMONTH(V34,2),EOMONTH(V34,3))
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 =IF(V34<>"",IF(DAY(V34)<=15,DATE(YEAR(V34),MONTH(V34)+3,0),DATE(YEAR(V34),MONTH(V34)+4,0)),"")
=IF(V34="","",EOMONTH(V34-15,3)) でいいでしょ。多分。
H20.6.12___H20.8.31 <--- =GetDate(A1, 2+ABS(DAY(A1)>15), 99) H20.6.16___H20.9.30 <--- =GetDate(A1, 2+ABS(DAY(A1)>15), 99) =EOMONTH(A1,2+ABS(DAY(A1)>15)) でもOK! Public Function GetDate(ByVal Now As Date, _ ByVal Move As Integer, _ ByVal Hiduke As Integer) As Date GetDate = DateSerial(DatePart("yyyy", Now), _ DatePart("m", Now) + Move - (Hiduke = 99), _ Hiduke * Abs(Hiduke <> 99)) End Function エクセルは一度も操作したことがありません。 でも、エクセルの関数を使う場合も同じ手法だと推察します。 [イミディエイト] ? GetDate("2008/6/12", 2, 99) 2008/08/31 ? GetDate("2008/6/12", 3, 99) 2008/09/30 ? GetDate("2008/6/12", 2, 1) 2008/08/01 ? GetDate("2008/6/12", 3, 1) 2008/09/01 要は、月を2加算するのか2+1加算するのかだと思います。 [イミディエイト] ? ABS(DAY("2008/6/12")>15) 0 ? ABS(DAY("2008/6/16")>15) 1
お礼
=IF(V34="","",IF(DAY(V34)<=15,EOMONTH(V34,2),EOMONTH(V34,3))) 有難うございました。 V34が空欄でも対応出来る様、上記の様にしました。