【EXCEL:VBA】何日後・何日前の日付を求めたい

何日後・何日前の日付を知りたい

この記事では、ExcelVBAを利用して「指定した日付の何日後や何日前の日付を求める」方法について説明しています。

 

計画やスケジュールを考えるときに、今日の100日後の日付を知りたい場面があります。

 

また、今日の100日前の日付を知りたい場面もあります。

 

そういったときに役に立つ機能を今回はご紹介します。

 

 

VBAを利用すれば、そういった何日後や何日前の日付を簡単に求めることができます。

 

例えば、以下のような日付だって簡単に求めることもできます。

 

例1)今日の1年後の2ヶ月後の3日後の日付

例2)今日の1000日後の日付

例3)今日の20ヶ月前の日付

 

求めたい日付の以下の条件を指定するだけです。

  • 基準日
  • 何年後(前)
  • 何ヶ月後(前)
  • 何日後(前)

 

また、今回作成する機能(VBA関数)は、セルから呼び出すことができます。

 

 

それでは、指定した日付の何日後・何日前の日付を求める機能を作成していきましょう。

 

困っている女性

計画書を作成するときに、半年後の日付を求めることがよくあるの。

困っている女性

そういう時に、EXCELの標準機能にある「オートフィル」を使って、求めるの。
連続した数値や日付を入力するときに使う機能のことね。基準日を入力したセルを下や横にドラッグしているんだね。

解決する男性

困っている女性

そうそう。でも、半年後だと120日分をドラッグする必要があり、結構手間なの。

困っている女性

簡単に何日後や何日前の日付を求める方法はないの!?
それなら、VBAを使えば簡単に何日後や何日前の日付を求めることができるよ。

解決する男性

しかも、何ヶ月後や何年後だって一瞬で求めることができるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

概要図(指定した日付の何日前・何日後の日付を求める機能)

今回説明する「指定した日付の何日前・何日後の日付を求める機能」の概要図は、以下です。

概要図(指定した日付の何日前・何日後の日付を求める機能)

概要図(指定した日付の何日前・何日後の日付を求める機能)

基準日と年・月・日を指定して、未来または過去の日付を求めることができます。

 

◆EXCEL標準関数の「DATE」を使った何日後や何日前の日付を求める方法は、以下の記事を参照してください。

指定日後の日付を計算したい 【EXCEL:DATE関数】指定日後の日付を計算したい

 

それでは、指定した日付の何日後や何日前を求める機能の作成方法を、1つ1つ順番に説明していきます。

基準日や条件を指定する欄を準備する

まず、基準日・年・月・日を指定する欄と求めた日付を表示する欄を作成します。

「メイン」シートを作成する

メインシートを作成する

メインシートを作成する

 

  1. 「メイン」という名前のシートを作成します。(好きなシート名で構いません)
  2. 1行目に「基準日」、「年」、「月」、「日」、「何日後・何日前」のタイトル行を作成します。
  3. 2行目に「基準日」、「年」、「月」、「日」の入力する欄と求めた日付を表示する欄を作成します。
  4. A2セル(基準日)の表示形式を「日付」にします。
  5. B2セル(年)、C2セル(月)、D2セル(日)の表示形式を「標準」にします。
  6. E2セル(求めた日付)の表示形式を「日付」にします。

 

※今回作成する機能は、VBA関数さえ作成していれば、好きなシートやセルで機能を利用することができます。

 

VBAで何日後・何日前の日付を求める機能を作成する

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

VBAプログラムを入力する

VBAプログラムを入力する

 

標準モジュールを追加して、以下のソースを書きます。

 

最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

何日後・何日前の日付を求める機能の使い方

それでは、指定した日付の何日後・何日前の日付を求める方法を説明します。

何日後・何日前の日付を求める機能の使い方

何日後・何日前の日付を求める機能の使い方

 

まず、A2セル(基準日)に好きな日付を入力します。

次に、B2セル(年)、C2セル(月)、D2セル(日)に求めたい条件を入力します。

何年後、何ヶ月後、何日後を求めたい場合は、普通に数字を入力します。

何年前、何ヶ月前、何日前を求めたい場合は、マイナスの数字を入力します。

 

E2セル(求めた日付を表示する欄)には、先程VBAで作成した「CalcDate」関数を指定します。

具体的には、「=CalcDate(A2,B2,C2,D2)」と入力します。

上記の図では、基準日「2021/2/6」の1年後、2ヶ月後、3日後の日付を指定して、「2022/4/9」が表示されています。

 

VBAで作成した関数をセルから呼び出して、利用することができるのです。

驚きましたか?

 

EXCELの標準関数(SUM・INT・ROUNDなど)だけでなく、オリジナルのあなただけの関数を利用することができます。

 

 

今回の記事で本当にお伝えしたかったことは、「自作関数をセルから呼び出せる」ということです。

 

VBAで好きな機能を作成すれば、あなたは標準機能に縛られることなく、自由になれるのです。

 

 

標準関数を駆使して求める複雑な計算は、自作関数にしてしまえば、一発で呼び出せるのです。

 

そうすれば、時間も節約できますし、間違いも無くせますよ。

 

ちなみに、100日後の日付は以下のように入力すれば求めれます。

100日後の日付を求める

100日後の日付を求める

 

さらに、100日前の日付は以下のように入力すれば求めれます。

100日前の日付を求める

100日前の日付を求める

 

実は、A2・B2・C2・D2セルを入力せずとも、直接指定して機能を利用することができます。

以下のように、「CalcDate」関数に基準日(2021/2/6)や日(1日後)を指定すれば、日付を求めれます。

具体的には、E2セルに「=CalcDate(“2021/2/6”,0,0,1)」と入力しています。

直接日付や条件を入力する

直接日付や条件を入力する

また、「CalcDate」関数は、好きなセルに入力できますので、好きなセルで利用することもできます。

 

何日後・何日前の日付を求めるVBA関数(CalcDate)の説明

それでは、自作のVBA関数(CalcDate)を説明します。

セルから呼び出せるように関数宣言する

セルから呼び出せるように「Public」のFunction関数を作成します。

引数に、日付型のbaseDate、数値型のyear、数値型のmonth、数値型のdayを指定します。

戻り値には、日付型を指定します。

 

※セルから呼び出したい自作関数は、PublicのFunction関数で作成します。

 

①基準日の指定された年数後の日付を求める

ここでは、引数「baseDate」で指定された基準日を利用しています。

引数「year」に指定された年数後(前)の日付を求めています。

 

②①で求めた日付の月数後の日付を求める

ここでは、引数「month」に指定された月数後(前)の日付を求めています。

基準とする日付は、先程①で求めた日付を利用しています。

 

③②で求めた日付の日数後の日付を求める

ここでは、引数「day」に指定された日数後(前)の日付を求めています。

基準とする日付は、先程①で求めた日付を利用しています。

最終的に求めた日付を戻り値として、呼び出し元に返しています。

 

それでは、この自作関数を作って、作業を効率化しましょう。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です