Accessでデータを集計する際に、ある特定の時間単位として例えば、週単位でデータを処理するといったケースがあります。
このようなときに使える関数として、DatePart関数がありますので、サンプルを交えて紹介します。
DatePart関数について
まずは、DatePart関数について見ていきましょう。基本構文は次のようになります。
DatePart(interval, date [, firstdayofweek] [, firstweekofyear] )
ここで、各引数は次のようになります。
表1 DatePart関数の引数について
引数 | 説明 |
interval | 必須。 返す時間間隔の文字列式です。 |
date | 必須。 評価するバリアント型日付の値です。 |
firstdayofweek | 省略可能。 週の始まりの曜日を表す定数です。 省略すると、日曜日を指定したものと見なされます。 |
firstweekofyear | 省略可能。 年の第 1 週を指定する定数です。 省略すると、1 月 1 日を含む週が第 1 週と見なされます。 |
表2 inteval引数の値
設定 | まとめる時間単位 |
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間通算日 |
d | 日 |
w | 平日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
表3 firstofweek引数の値
定数 | 値 | 説明 |
vbUseSystem | 0 | NLS API の設定を使います。 |
vbSunday | 1 | 日曜日 (既定) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
表4 firstofyear引数の値
定数 | 値 | 説明 |
vbUseSystem | 0 | NLS API の設定を使います。 |
vbFirstJan1 | 1 | 1 月 1 日が含まれる週から開始します (既定)。 |
vbFirstFoutDays | 2 | 新年の少なくとも 4 日が含まれる最初の週から開始します。 |
vbFirstFullWeek | 3 | 年の最初の完全な週から開始します。 |
このように、DatePart 関数を使用して日付を評価し、特定の時間間隔を返すことができます。 例えば、曜日または現在の時間を計算するために、DatePartを使用する場合があります。
次からは、サンプルデータを用いて週単位で集計する方法を見ていきましょう。
サンプルデータについて
今回用いるサンプルデータを紹介します。
まず、「T_DatePart関数」テーブルを作成し、「品目」、「使用年月日」及び「使用数」フィールドを作成します。これらフィールドのデータ型は、それぞれ、「短いテキスト」、「日付/時刻型」及び「数値型」とします。
続いて、作成した「T_DatePart関数」テーブルに表5のようにサンプルデータを登録します。
表5 サンプルデータ
品目 | 使用年月日 | 使用数 |
鉛筆 | 2021/08/02 | 5 |
鉛筆 | 2021/08/04 | 11 |
鉛筆 | 2021/08/10 | 2 |
消しゴム | 2021/08/01 | 1 |
消しゴム | 2021/08/03 | 3 |
消しゴム | 2021/08/12 | 8 |
消しゴム | 2021/08/13 | 2 |
鉛筆 | 2021/08/14 | 7 |
これで準備は完了です。それでは次からDatePart関数を用いて、週単位での各品目の使用数を集計してみましょう。
週単位での集計方法
まずは、「Q_DatePart関数」クエリを作成し、テーブルの表示で「T_DatePart関数」テーブルを追加し、集計クエリに設定します。
続いて、【フィールド】項目と【集計】項目には、以下のように値(カッコ内が【集計】項目に入力する値。)を入力します(図1参照)。
・品目 (グループ化)
・使用数の合計: 使用数 (合計)
・週数: DatePart(“ww”, [使用年月日]) (グループ化)
これで、準備は整いましたのでどのように集計されるかを確認してみましょう。
作成したクエリをデータシートビューで開くと、図2に示すように1月1日を起点とした週数で、品目ごとに集計した結果が表示されます。
このように、DatePart関数を用いることで日付情報から時間単位での抽出をすることができるようになります。
まとめ
今回は特定の時間単位でデータ集計をする方法を紹介しました。週当たり、月当たり等、決まった時間単位で定期的にデータを集計しないといけない場合に、今回紹介した方法でクエリを作成しておくことで、処理が格段と早くなるかと思いますので、活用されてみてはいかがでしょうか。
今の時代、VBAに限らずプログラミングができるということは、当然のスキルとして広く社会で認知されています。いまだプログラミングが十分にできないという人は、今からでも遅くありません。できるだけ早く基本的なプログラミングスキルを習得することをお勧めします。
ご自身にあった専門書を参考に、実践的なプログラミング・データベース・サーバ、データ分析・機械学習など、システムエンジニアや今後を担うDX人材に必要とされているスキル獲得に向けて基礎から学んでいくことが大切です。
最初につまずきがちな点も、書籍を読みながら試行錯誤して課題解決していくことで、自身のスキルアップを目指すことができます。思い立ったが吉日、是非業務効率の改善に向けてプログラミング学習に勤しんでください!
スポンサーリンク
コメント