経理ではデータを集計する際に実際の暦の「年」ではなく、事業「年度」でデータを集計する必要があります。
会計ソフトから出力したデータに年度が記載されていれば問題ないんですが、自分の会社で使用している会計ソフトのデータには年度が記載されていません。
数式で算出することもできるんですが、年度末には何度も入力する必要があって、ちょっとストレスなんですよね。
そこで少しでも楽をするために自作関数を作ってみることにしました!
事業年度とは
暦「年」と会計「年度」について、まずは整理してみましょう
- 暦年:カレンダーと同じく1/1から始まり12/31を終わりとする1年間
- 事業年度:企業が財務報告を行うために設定した期間
同じ1年間ではあるのですが、事業年度は1月始まりとは限りません。
自分の会社では4月始まり3月終わりの事業年度を採用していて、これって結構一般的なパターンなんじゃないでしょうかね。
4月始まりのパターンの場合、年度は始まりの月の暦年が年度になります。
2024年4月始まりであれば2024年度になります。
終わりの月は2025「年」3月になるんですが、2024「年度」3月として扱います。
図にすると以下のようになります。
この開始月と終了月の暦年が異なる場合に年度を合わせておかないと集計上困ることになるわけです。
数式で年度算出
年度を関数で算出する場合は以下のようになります。
=YEAR(A1)-IF(MONTH(A1)<=3,1,0)
上記は3月終わりの場合の例です。
単純にYEAR関数で年を抽出すると暦年になるため、1-3月の年度が正しい数値になりません。
そこで月が1-3月の場合は年を1つ減らし、正しい年度になるように調整しています。
関数自体はそんなに長くないんですが、これを何回も書いてると「もっと簡単にできないかな」って思うんですよね。
自作関数で年度算出
そこで作成したのがこちらの「年度」関数です。
関数の引数に年度判定を行いたい日付を指定するだけです。
コードは以下のとおりです。
Public Function 年度(日付 As Date, Optional 年度始月 As Long = 4) As Long Dim z月 As Long: z月 = Month(日付) 年度 = Year(日付) + (z月 < 年度始月) End Function
汎用的に使えるように年度の期間は引数で指定できるようにしました。
ただ、自分の会社の年度の場合は引数を指定しなくても使えるように、Optionalで設定してます。
Optional設定をした引数は、引数を指定しなかった場合に、デフォルトで指定した値を引数に取るようにすることが出来ます。
今回の例では第2引数を指定しなかった場合に「4」が引数となります。
あとは数式でやったのと同じことをVBAで実現しています。
まとめ
これで週明けからの集計作業が少し楽になりそうです!
ストレス軽減できそうで嬉しいですね。