エクセルで日付データを扱う際、よくある操作の1つが「1か月前の日付を表示する」ことです。
今回は、オートフィルや関数、VBAマクロを使って、A列の日付から1か月前の日付をB列に一括で出力する方法をご紹介します。
エクセルで1か月前を表示させる方法【オートフィル、A列の1か月前をB列に出して一括処理、関数】
まずは、関数を使ってA列の1か月前の日付をB列に表示させる方法です。
まずA2セル以降に元の日付を入力します。
B2セルに `=EDATE(A2,-1)` と入力し、Enterキーを押します。
この時に日付ではなく「44986」のような”シリアル値”が表示されてしまうことがあります。
この場合、「セルの書式設定」から表示形式を「日付」に変更しましょう。
なお「ホーム」タブ→「数値」からでも変更可能です(^^)
これで日付が正しく表示されましたね。
B2セルの右下をドラッグし、B列全体にオートフィルしましょう。
これで、A列の日付から1か月前の日付がB列に反映されました。
VBA(マクロ)の場合
次に、VBAマクロを使ってA列の1か月前の日付をB列に表示する方法をご紹介します。Alt+F11でVBE画面を開いて以下をコピペしましょう。
“`vba
Sub OneMonthBefore()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(“B1:B” & lastRow).FormulaR1C1 = “=EDATE(RC[-1],-1)”
Range(“B1:B” & lastRow).Value = Range(“B1:B” & lastRow).Value
End Sub
“`
Alt+F8でマクロ選択画面を開きOneMonthBefore関数を実行します。
このマクロを実行すると、A列の日付から1か月前の日付がB列に表示されます。
エクセルで1か月前を表示させる方法【DATE関数、オートフィル、A列の1か月前をB列に出して一括処理】
DATE関数とYEAR、MONTH、DAY関数を組み合わせて、1か月前の日付を計算することもできます。
A列の1か月前の日付をB列に表示し、オートフィルでC列に反映させる方法もあります。
B2セルに `=DATE(YEAR(A2),MONTH(A2)-1,DAY(A2))` と入力し、Enterキーを押します。
B2セルの右下をドラッグし、B列全体にオートフィルします。
これで、A列の日付から1か月前の日付がB列に反映されました。
VBA(マクロ)の場合
最後に、DATE関数を使ったVBAマクロでA列の1か月前の日付をB列に表示する方法をご紹介します。Alt+F11でVBE画面を開いて以下をコピペしましょう。
“`vba
Sub OneMonthBeforeDate()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range(“B1:B” & lastRow).FormulaR1C1 = “=DATE(YEAR(RC[-1]),MONTH(RC[-1])-1,DAY(RC[-1]))”
Range(“B1:B” & lastRow).Value = Range(“B1:B” & lastRow).Value
End Sub
“`
Alt+F8でマクロ選択画面を開きOneMonthBeforeDate関数を実行します。
このマクロを実行すると、DATE関数を使ってA列の日付から1か月前の日付がB列に表示されます。
まとめ
ここまで、エクセルで1か月前の日付を表示する方法をご紹介しました。
ぜひ業務の効率化にお役立てください!