1/21/2024

Excel。VBA。日付から年度と四半期を手早く表示するには、どうしたらいいの。【quarter】

Excel。VBA。日付から年度と四半期を手早く表示するには、どうしたらいいの。

<Excel VBA:DateSerial関数>

日付から、4月~翌年3月までの年度と、その四半期を表示したい。


関数をつかって、算出してもいいのですが、今回はExcel VBAで対応してみたいと思います。

DateSerial関数

今回は、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")」で、四半期を算出することができます。


これで、年度と四半期を表示することができました。