ここでは、【Excel】エクセルで1年足す(1年後の日付を表示)方法について解説しています。
具体的には、
・DATE関数とYEAR関数、MONTH関数、DAY関数を使用する。
・EDATE関数を使う方法。
・マクロも確認。
それではさっそく見ていきましょう。
エクセルで1年後の日付を表示する方法【関数、b列の元データをc列に一括表示、オートフィル】
まずは、関数を使って1年後の日付を表示する方法をみていきましょう。
まず、B列に元となる日付データを入力します。
次に、C列の先頭のセルに以下の数式を入力します。
=DATE(YEAR(B2)+1,MONTH(B2),DAY(B2))
この数式で「DATE関数」とは、年、月、日を指定して日付を返す関数です。
「YEAR関数」は、日付から年を取り出す関数です。B2セルの日付の年に1を加算しています。
「MONTH関数」は、日付から月を取り出す関数です。B2セルの日付の月をそのまま使用します。
「DAY関数」は、日付から日を取り出す関数です。B2セルの日付の日をそのまま使用します。
したがって、この数式全体で、B2セルの日付の1年後の日付を計算しています。
入力したセルの右下をドラッグしてオートフィルすると、B列の日付に対応した1年後の日付がC列に一括で表示されます。
VBA(マクロ)の場合
次に、VBAを使って1年後の日付を表示する方法を紹介します。
Alt+F11でVBE画面を開いて以下をコピペしましょう。
Sub AddOneYear()
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("C2:C" & lastRow).Formula = "=DATE(YEAR(B2)+1,MONTH(B2),DAY(B2))"
.Range("C2:C" & lastRow).Value = .Range("C2:C" & lastRow).Value
End With
End Sub
このマクロの意味を解説します。
lastRow変数には、B列の最終行の行番号が格納されます。
ActiveSheetは現在アクティブなシートを表します。
.Range(“C2:C” & lastRow).Formulaで、C2セルからC列の最終行まで数式を一括で入力します。数式の内容は、先ほど紹介した関数と同じです。
.Range(“C2:C” & lastRow).Valueで、入力した数式を値に変換します。
Alt+F8でマクロ選択画面を開きAddOneYear関数を実行します。
エクセルで1年後の日付を表示する方法【別の関数、b列の元データをc列に一括表示、オートフィル】
DATE関数以外にも、1年後の日付を表示する関数があります。ここでは、EDATE関数を使う方法を紹介します。
B列に元となる日付データを入力し、C列の先頭のセルに以下の数式を入力します。
=EDATE(B2,12)
このEDATE関数は、指定した日付に、指定した月数を加算した日付を返す関数です。
B2セルの日付に、12ヵ月(1年)を加算しています。
入力したセルの右下をドラッグしてオートフィルすると、B列の日付に対応した1年後の日付がC列に一括で表示されます。
VBA(マクロ)の場合
EDATE関数を使ったVBAも紹介します。
Alt+F11でVBE画面を開いて以下をコピペしましょう。
Sub AddOneYearEDATE()
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
.Range("C2:C" & lastRow).Formula = "=EDATE(B2,12)"
.Range("C2:C" & lastRow).Value = .Range("C2:C" & lastRow).Value
End With
End Sub
このマクロの意味は、DATE関数を使ったマクロとほとんど同じです。.Range(“C2:C” & lastRow).Formulaの数式がEDATE関数を使っている点だけが異なります。
Alt+F8でマクロ選択画面を開きAddOneYearEDATE関数を実行します。
まとめ エクセルで1年後の日付を表示する方法
以上、エクセルで1年後の日付を表示する方法を紹介しました。
関数を使う方法とVBAを使う方法、それぞれ2つずつ紹介しましたので、用途に応じて使い分けてください。