大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで日付を1日加算したり、引き算したり計算する方法についてご紹介します。日付の計算は、DateAddを使えば簡単にできます。年、月、日、週を進ませたり、戻したりしたい場合は、DateAddを使いましょう。

はじめに

この記事では、日付を進めたり、戻したり計算する方法についてご紹介します。

日付の操作は、DateAddを使えば簡単です。

DateAddは、年、月、日、週を進めたり、戻したりできます。

では、DateAddの使い方と具体的な例について、説明していきます。

この記事で紹介すること

  • 日付を進めたり、戻したりする方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードを記載しておきます。

VBAコードだけ確認したい、という場合にご活用ください。

'年
a = DateAdd("yyyy", 1, "2020/01/01") '1年進める
a = DateAdd("yyyy", -1, "2020/01/01") '1年戻す
'月
a = DateAdd("m", 1, "2020/01/01") '1か月進める
a = DateAdd("m", -1, "2020/01/01") '1か月戻す
'日
a = DateAdd("d", 1, "2020/01/01") '1日進める
a = DateAdd("d", -1, "2020/01/01") '1日戻す
'週
a = DateAdd("ww", 1, "2020/01/01") '1週間進める
a = DateAdd("ww", -1, "2020/01/01") '1週間戻す

では、解説していきます。

VBAでDateAddを使って日付の加算や引き算をする

日付の加算や引き算をするには、『DateAdd』を使えばできます。

日付を1日進めたり、1か月戻したりができます。

日付の計算をする場合には、『DateAdd』を覚えておけばいいです。

使い方(DateAdd)

日付を進めたり、戻したりする『DateAdd』は次のように入力します。

『計算後の日付 = DateAdd(間隔, 増減量, 日付)』

間隔には、次の値が指定できます。

  • 年:"yyyy"
  • 月:"m"
  • 日:"d"
  • 週:"ww"

増減量には、『1』や『-1』などの数値を入力します。

日付には、日付型のデータもしくは、日付と認識できる文字列を入力します。

『年』を1年進める、戻す

日付の『年』を1年進めたり、戻すには、DateAddの引数に『"yyyy"』を指定します。

日付を1年進める

日付『2020/01/01』を1年進めてみます。

Sub TEST1()
    
    a = "2020/01/01"
    
    '1年進める
    b = DateAdd("yyyy", 1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1年進めた結果

結果は、『2021/01/01』となりました。

日付が1年進みました。

日付を1年戻す

次に、日付『2020/01/01』を1年戻してみます。

Sub TEST2()
    
    a = "2020/01/01"
    
    '1年戻す
    b = DateAdd("yyyy", -1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1年戻した結果

結果は、『2019/01/01』となりました。

日付が1年戻りました。

DateAddを使えば、簡単に日付の操作ができます。

『月』を1月進める、戻す

日付の『月』を1月進めたり、戻すには、DateAddの引数に『"m"』を指定します。

日付を1か月進める

日付『2020/01/01』を1か月進めてみます。

Sub TEST3()
    
    a = "2020/01/01"
    
    '1か月進める
    b = DateAdd("m", 1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1か月進めた結果

結果は、『2020/02/01』となりました。

日付が1か月進みました。

日付を1か月戻す

次に、日付『2020/01/01』を1か月戻してみます。

Sub TEST4()
    
    a = "2020/01/01"
    
    '1か月戻す
    b = DateAdd("m", -1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1か月戻した結果

結果は、『2019/12/01』となりました。

日付が1か月戻りました。

日付型のデータさえあれば、日付の操作は簡単です。

『日』を1日進める、戻す

日付の『日』を1日進めたり、戻すには、DateAddの引数に『"d"』を指定します。

日付を1日進める

日付『2020/01/01』を1日進めてみます。

Sub TEST5()
    
    a = "2020/01/01"
    
    '1日進める
    b = DateAdd("d", 1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1日進めた結果

結果は、『2020/01/02』となりました。

日付が1日進みました。

日付を1日戻す

次に、日付『2020/01/01』を1日戻してみます。

Sub TEST6()
    
    a = "2020/01/01"
    
    '1日戻す
    b = DateAdd("d", -1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1日戻した結果

結果は、『2019/12/31』となりました。

日付が1日戻りました。

日付の計算をする際は、DateAddを使えば簡単です。

『週』を1周進める、戻す

日付の『週』を1週間進めたり、戻すには、DateAddの引数に『"ww"』を指定します。

日付を1週間進める

日付『2020/01/01』を1週間進めてみます。

Sub TEST7()
    
    a = "2020/01/01"
    
    '1週間進める
    b = DateAdd("ww", 1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1週間進めた結果

結果は、『2020/01/08』となりました。

日付が1週間進みました。

日付を1週間戻す

次に、日付『2020/01/01』を1週間戻してみます。

Sub TEST8()
    
    a = "2020/01/01"
    
    '1週間戻す
    b = DateAdd("ww", -1, a)
    
    MsgBox b
    
End Sub

実行してみます。

DateAddで日付を1週間戻した結果

結果は、『2019/12/25』となりました。

日付が1週間戻りました。

1週間後や1週間前の日付を取得したい、といった場合でも、DateAddで簡単に取得できます。

日付の計算をするDateAddの実践例

日付の計算ができるDateAddの実践例について、ご紹介します。

すでに入力されている日付に対して、1日進めたいとか、1日戻したいといった場合に使えます。

セルに入力した日付を加算や引き算をする

セルに入力した日付に対して、日付の加算や引き算をするVBAコードを作成してみます。

Sub TEST9()
    
    With ActiveSheet
        a = .Cells(1, 2) '日付取得
        b = DateAdd("yyyy", .Cells(5, 2), a) '年を計算
        b = DateAdd("m", .Cells(6, 2), b) '月を計算
        b = DateAdd("d", .Cells(7, 2), b) '日を計算
        .Cells(2, 2) = b 'セルに値を入力
    End With
    
End Sub

セルに入力されている日付『2020/01/01』を加減算してみます。

まず、加減算するセルに年月日をそれぞれ『-1』『1』『-1』を入力します。

セルに加減算する年月日を入力

セルに年月日を入力する

VBAコードをボタンをクリックして実行します。

ボタンにVBAコードが登録されています。

日付を加減算する

DateAddで日付を加減算した結果

結果は、『2019/1/31』となりました。

元の日付『2020/01/01』から1年戻して、1か月進めて、1日戻せています。

DateAddを使えば、日付の計算は簡単です。

スピンボタンで日付の加算や引き算をする

ユーザーフォームのスピンボタンで日付の加算や引き算をしてみます。

ユーザーフォームで日付を扱うときに結構使えます。

テキストボックスに入力された日付を、年月日毎に日付を進めたり、戻したりするVBAコードです。

こちらのVBAコードは、『ユーザーフォームの中のコード』に記載します。

'初期値設定
Private Sub UserForm_Initialize()
    TextBox1.Text = "2020/01/01"
End Sub

'スピンボタンアップ
Private Sub SpinButton1_SpinUp()
    a = TextBox1.Text
    '1年進める
    TextBox1.Text = DateAdd("yyyy", 1, a)
End Sub

'スピンボタンダウン
Private Sub SpinButton1_SpinDown()
    a = TextBox1.Text
    '1年戻す
    TextBox1.Text = DateAdd("yyyy", -1, a)
End Sub

'スピンボタンアップ
Private Sub SpinButton2_SpinUp()
    a = TextBox1.Text
    '1か月進める
    TextBox1.Text = DateAdd("m", 1, a)
End Sub

'スピンボタンダウン
Private Sub SpinButton2_SpinDown()
    a = TextBox1.Text
    '1か月戻す
    TextBox1.Text = DateAdd("m", -1, a)
End Sub

'スピンボタンアップ
Private Sub SpinButton3_SpinUp()
    a = TextBox1.Text
    '1日進める
    TextBox1.Text = DateAdd("d", 1, a)
End Sub

'スピンボタンダウン
Private Sub SpinButton3_SpinDown()
    a = TextBox1.Text
    '1日戻す
    TextBox1.Text = DateAdd("d", -1, a)
End Sub

ではユーザーフォームを開いてみます。

初期値取得

ユーザーフォームを開いて日付を取得

最初に日付『2020/01/01』を取得しました。

では、1年戻してみます。

日付を1年戻す

DateAddを使って1年戻した結果

1年戻せました。

次に、1か月進めてみます。

日付を1か月進める

DateAddを使って1か月進めた結果

1か月進みました。

次に、1日戻してみます。

日付を1日戻す

DateAddを使って1日戻した結果

1日戻せました。

こんな感じです。DateAddを使えば、日付を進める、戻すは簡単です。

おわりに

この記事では、日付を進めたり、戻したり計算する方法についてご紹介しました。

日付の操作は、DateAddを使えば簡単です。

年、月、日、週を進めたり、戻したりできます。

日付を1日進めたり、戻したり計算したい場合は、DateAddを使いましょう。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す