PR

必見!Accessで年度処理をする方法

全般

Accessでは日付/時刻型のデータを持たせることができ、月単位、四半期単位、年単位での処理は比較的容易にできますが、年度単位での処理ができません。

日本では、4月を始期とした会計年度を採用していることが多く、このため年度単位でデータの処理が必要になる場面も多々あります。しかしながら、Accessには年度単位での集計機能がないため独自での処理ルーチンを構築する必要があります。

今回は、サンプルデータを用いながら4月を始期とした年度処理(この方法は、例えば9月を始期とした処理等、幅広く活用できます。)の方法を紹介します。

スポンサーリンク

サンプルデータ

サンプルデータは、単純に「費用発生年月日」、「費用」とし、これらにあったサンプルテーブルを作成します。今回はテーブル名を「T_費用」とし、「費用発生年月日」フィールドは日付/時刻型、「費用」フィールドは通貨型とします。

続いて、作成した「T_費用」テーブルに値を入力します。今回用意したデータは表1に示すとおりです。

表1 サンプルデータ

費用発生年月日 費用
2020/10/01 ¥500
2020/11/20 ¥2,500
2020/12/31 ¥3,000
2021/01/15 ¥290
2021/02/28 ¥1,500
2021/04/11 ¥9,999
2021/05/14 ¥10,001

それでは、これらデータを用いて処理方法を見ていきましょう。

標準モジュールの追加

年度処理をするにあたりVBAを用います。手順に沿って見ていきましょう。

まずは、図1に示すようにデータベースツールタブの「Visual Basic」をクリックします。

図1 VBA画面の表示方法

続いて、表示されたVBA画面で「挿入」→「標準モジュール」と選択します。

図2 標準モジュールの追加方法

新たに標準モジュールが作成されますので、図3に示すように「Public Function」としてFiscalYear関数を作成します。

図3 VBAコードの追記方法

実際のコードは以下のとおりです。

Public Function FiscalYear(IncidentDate) As Integer
Dim IncidentMonth As Integer

'引数に対してMonth関数を用いて月を取得する。
IncidentMonth = Month(IncidentDate)

'1月から3月までは「年度 = 年 - 1」となる。
If IncidentMonth >= 1 And IncidentMonth <= 3 Then
  FiscalYear = Year(IncidentDate) - 1

'4月から12月までは「年度 = 年」として処理する。
Else
  FiscalYear = Year(IncidentDate)
End If

End Function

上記コードを追記後、Module1として保存します。

作成した関数をクエリで使用する方法

作成した関数を用いて、「費用発生年月日」がどの年度に属するかを確認してみましょう。

クエリデザインから新規にクエリを作成します。ここでは、「年度処理結果」というクエリ名称にします。

テーブルには「T_費用」を追加します。また、【フィールド】項目には「費用発生年月日」、「費用」に加えて、「年度: FiscalYear([費用発生年月日])」も追加します(図4参照)。

図4 年度処理クエリの作成方法

先に作成した「FiscalYear」関数はPublic Functionとしていますので、今回作成しているAccessファイル内であればどのオブジェクトからも使用することができ、引数に対して「年度」に相当する値を戻り値として返すようにしています。

サンプルデータと比較してどのような年度結果になっているかを確認してみましょう。作成したクエリをデータシートビューで開くと図5のような結果が得られます。

図5 年度処理クエリによる年度算出結果

このように、発生年月日に対して4月を始期とした年度処理ができていることが確認できました。ここまでできれば、例えば、年度毎での費用を集計することも容易にできるようになります。先ほど作成した年度処理結果クエリのフィールドを次のように設定しなおします。

図6 年度毎での費用集計方法

図6に示すように、まずは「デザイン」タブの「集計」アイコンをクリックします。続いて【フィールド】/【集計】項目はそれぞれ次のように組み合わせます。

「費用」/合計、「年度: FiscalYear([費用発生年月日])」/グループ化

これで、設定は完了しましたので、改めてデータシートビューで結果を確認してみましょう。すると、図7に示すように年度毎での発生費用合計値が出力されるようになったと思います。

図7 年度毎での費用集計結果

まとめ

今回は、Accessで年度処理する方法について紹介をしました。VBAを用いてクエリにも展開することで情報処理の幅が非常に広がったかと思います。今回は4月を始期とした年度処理として紹介しましたが、9月を始期とした処理等様々な応用が利きますので、是非今回紹介した方法を活用していただければと思います。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました