[Access 2016/2013/2010/2007]
月や年、四半期など、一定の期間でグループ化して集計したいことがあります。この記事では、図1の[Q_受注明細]クエリのレコードを、月ごとにグループ化して集計する手順を例に集計方法を説明します。
なお、クエリでの集計や抽出について、詳しくは「【初心者向け】クエリで集計する基本の基本」「【初心者向け】集計クエリでの抽出の基本」を参照してください。
「年月」でグループ化して集計する
「年月」でグループ化して集計を行うには、[受注日]フィールドから「年月」を取り出す必要があります。
Accessでは日付から年や月を取り出すための関数が豊富にありますが、中でもFormat関数(構文1、正式な構文はFormat関数のページを参照)は万能選手です。引数[書式]の設定次第で、日付からさまざまな情報を取り出せます。
構文1 データに書式を設定して返す
Format(データ, 書式)
日付から「2016年01月」の形式で年月を取り出すには、Format関数の引数[書式]に「"yyyy¥年mm¥月"」を指定します(式1)。「¥」は、次に入力された文字をそのまま表示するための記号です。クエリで「"yyyy年mm月"」と入力すると、自動的に「¥」が補われます。
式1 [受注日]フィールドから「年月」を取り出す
受注月: Format([受注日],"yyyy¥年mm¥月")
新規クエリに[集計]行を表示し、[受注月]フィールドで[グループ化]、[金額]フィールドで[合計]を指定すると(図2)、年月ごとに金額を集計できます(図3)。
なお、今回、[受注日]から「月」のほかに「年」も取り出したのは、[受注日]フィールドに複数年にわたる日付が入力されているからです。「月」だけでグループ化すると、異なる年の同じ月が1つのグループにまとめられてしまうので注意してください。
「年」「四半期」「月」の取り出し方
「年」「四半期」「月」などでグループ化するときに役立つ関数式を紹介します。結果が文字列になるか数値になるかは、次項で解説する並べ替えに影響します。
■年([日付]は「1991/04/03」とする)
式 | 結果 | 結果の種類 |
---|---|---|
Year([日付]) | 1991 | 数値 |
Year([日付]) & "年" | 1991年 | 文字列 |
DatePart("yyyy",[日付]) | 1991 | 数値 |
Format([日付],"yyyy") | 1991 | 文字列 |
Format([日付],"yyyy¥年") | 1991年 | 文字列 |
Format([日付],"gggee¥年") | 平成03年 | 文字列 |
Format([日付],"gee") | H03 | 文字列 |
■四半期([日付]は「1991/04/03」とする)
式 | 結果 | 結果の種類 |
---|---|---|
DatePart("q",[日付]) | 2 | 数値 |
"第" & DatePart("q",[日付]) & "四半期" | 第2四半期 | 文字列 |
"第" & Choose(Month([日付]),4,4,4,1,1,1,2,2,2,3,3,3) & "四半期" | 第1四半期 | 文字列 |
Format([日付],"yyyy""年第""q""四半期""") | 1991年第2四半期 | 文字列 |
Format(DateAdd("m",-3,[日付]),"yyyy""年第""q""四半期""") | 1991年第1四半期 | 文字列 |
※ 四半期を求める考え方については「日付が第何四半期にあたるかを調べるには」を参照してください。
■月([日付]は「1991/04/03」とする)
式 | 結果 | 結果の種類 |
---|---|---|
Month([日付]) | 4 | 数値 |
Month([日付]) & "月" | 4月 | 文字列 |
DatePart("m",[日付]) | 4 | 数値 |
Format([日付],"mm") | 04 | 文字列 |
Format([日付],"mm¥月") | 04月 | 文字列 |
並べ替えについての補足
並べ替えについて補足しておきます。文字列の月を昇順に並べる場合、図2でやったように月を2桁にしておくと正しい順序で並びます。
○ 01月、02月、03月、04月、……、11月、12月
「月」を1桁にして「1月」~「12月」を昇順に並べ替える場合は、
× 10月、11月、12月、1月、……、8月、9月
となり、正しい順序になりません。文字列の月を並べるときは、注意してください。
ちなみに、Year関数やMonth関数の戻り値は数値データなので、図4、図5のように数値だけを取り出して並べ替える場合は、「月」を2桁にしなくても正しい順序になります。