Excel。VBA。日付から年度と四半期を手早く表示するには、どうしたらいいの。
<Excel VBA:DateSerial関数>
日付から、4月~翌年3月までの年度と、その四半期を表示したい。
関数をつかって、算出してもいいのですが、今回はExcel VBAで対応してみたいと思います。
今回は、A列のセミナー開催日からB列に年度。C列に四半期を表示していきます。
まずは、Excel VBAのプログラム文です。
Sub 四半期判断()
Dim i As Long
Dim lastrow As Long
Dim nendo_year As Long
Dim nendo_month As Long
Dim nendo As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
nendo_year = Year(Cells(i, "a"))
nendo_month = Month(Cells(i, "a")) - 3
nendo = Year(DateSerial(nendo_year, nendo_month + 1, 1) - 1)
Cells(i, "b") = nendo & "年度"
Cells(i, "c") = "第" & Format(Cells(i, "a"), "q") & "四半期"
Next
End Sub
このプログラム文を実行すると、年度と四半期が表示されます。
では、プログラム文を説明します。
最初は、変数の宣言文です。
Dim i As Long
Dim lastrow As Long
Dim nendo_year As Long
Dim nendo_month As Long
Dim nendo As Long
繰り返しの回数をlastrowに代入します。
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
そして、For to Next文をつかって、繰り返し処理をします。
年度は、4月から翌年3月までなので、4月ならば、第1四半期ですし、3月ならば、第4四半期と表示させたいわけです。
年も、1月~3月ならば、前年の数値を表示する必要があります。
よって、3ヶ月前にスライドさせることで、対応することができます。
それを踏まえて、
年を算出します。
nendo_year = Year(Cells(i, "a"))
月を算出します。
「-3」することで、四半期に対応することができます。
nendo_month = Month(Cells(i, "a")) - 3
DateSerial関数をつかって、月末日をつくります。
nendo = Year(DateSerial(nendo_year, nendo_month + 1, 1) - 1)
あとは、B列に年度とC列に四半期を表示する処理をおこないます。
Cells(i, "b") = nendo & "年度"
Cells(i, "c") = "第" & Format(Cells(i, "a"), "q") & "四半期"
「Format(Cells(i, "a"), "q")」で、四半期を算出することができます。
これで、年度と四半期を表示することができました。