- ベストアンサー
Excelでの日にちの関数を作成したい
今仕事で日程表を作っています。 そこで、今日から8ヵ月後の1日前の日程を日付関数を使ってしたいのですが、何かやり方はありますか。 例えばA1のセルで2005年4月15日から8ヵ月後の1日前の日にち(2005年12月14日)をB1のセルに入れたいのです。 2005年6月10日から8ヶ月後の1日前の日にちの場合は2006年2月9日となるのですが、同じような作業を手入力でやっているのがとても面倒です。 何か方法があれば教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 基本的には、 =DATE(YEAR(A1),MONTH(A1)+8,DAY(A1))-1 になります。 ただし、この数式だと、例えばA1が「2004/10/31」の場合、「2005/6/30」になります。 (8ヶ月後の6月に31日が存在しないため) これを、「2005/6/29」を返すようにしたいなら、以下のような数式にします。 =EDATE(A1,8)-1 ただし、EDATE関数は分析ツールの関数なので、メニューの[ツール]→[アドイン]→[分析ツール]にチェックを入れて下さい。 もし、分析ツールが使用出来ない場合は、 =MIN(DATE(YEAR(A1),MONTH(A1)+8,DAY(A1)),DATE(YEAR(A1),MONTH(A1)+9,0))-1 でEDATE関数の数式と同じ結果になります。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
年をまたぐ可能性がありますので、ワークシート関数でやるよりも、いっそのことユーザー定義関数を作成してしまった方が早いかもしれません。ただ、すぐVBAに頼るのは安易すぎるかもしれませんが、、 VBAならば、DateAdd関数があります。ワークシート関数としては用意されていませんので、ユーザー定義関数を作成します。 以下のコードを標準モジュールに貼り付けて使用します。 <手順> 1. [Alt]+[F11]キー押下で、Visual Basic Editor が起動します。 2. メニューから[挿入]-[標準モジュール]をクリック 3. 開いたウィンドウに次のコードをコピー&ペースト Function MonthAdd(基準日 As Date, 加算月数 As Integer) As Date MonthAdd = DateAdd("m", 加算月数, 基準日) End Function 4. Visual Basic Editor を終了 以上で、普通のワークシート関数のように、MonthAdd関数が使用可能になります。 例えば、A1セルに 2004/12/1 の8ヶ月後の前日を求めるなら、 =MonthAdd("2004/12/1",8)-1 と数式を書き込みます。ユーザー定義関数 MonthAdd は基準日に指定した月数を加えた日付を返しますので、最後に -1 とすることで、前日の日が取得できます。
お礼
早速のご回答ありがとうございます。 でも私の頭ではVBAが難しいです・・・ もう少し勉強します。 ありがとうございました。
お礼
早速のご回答ありがとうございました。 私の知りたい情報は「基本的には~」という関数式で 充分間に合いました。 私の頭の引き出しに入れておきます。 ありがとうございました。