[Access 2016/2013/2010/2007]
本記事では、図1のような[Q_受注明細]クエリの[単価]フィールドを1000円幅の価格帯に分類して[数量]フィールドを合計し、価格帯ごとの売上数を調べます。
目次
手順ダイジェスト
価格帯: Replace(Partition([単価],0,4999,1000),":","~")
手順解説
Step1 Partition関数で単価から価格帯を求める
まずは、Partition関数(構文1)を使用して、[単価]の数値を1000円幅の価格帯に変換します。
構文1 数値がどの区分に含まれるかを調べる
Partition(数値, 範囲の先頭, 範囲の最後, 区分のサイズ)
0円以上4999円以下を1000円の幅で分けるには、引数[範囲の先頭]に「0」、[範囲の最後]に「4999」、[区分のサイズ]に「1000」を指定します(式1)。
式1 0円以上4999円以下の[単価]を1000円幅に分ける
価格帯: Partition([単価],0,4999,1000)
集計の準備として[Q_受注明細]クエリをもとに新規クエリを作成し、式1の[価格帯]と、[数量]フィールドを配置します(図2)。
このクエリを実行すると、[Q_受注明細]クエリの各レコードの[単価]フィールドが1000円幅の価格帯に変換されます(図3)。
既定のフォントでは「:」の位置や数値の桁が揃いませんが、データシートのフォントを等幅フォントである「MSゴシック」に変更すると、きれいに揃います(図4)。
メモ
ただし、既定のプロポーショナルフォント(文字によって幅が違うフォント)では文字数が同じでも桁が揃わないので、ここでは等幅フォント(どの文字も同じ幅のフォント)に変更しました。
Step2 価格帯でグループ化して売上数を集計する
クエリをデザインビューに切り替え、集計行を追加します。[価格帯]フィールドをグループ化し、[売上数]フィールドを合計します(図5、図6)。
Step3 Replace関数で「:」を「~」に変えて見やすくする
「0:999」「1000:1999」の表記ではわかりづらいので、Replace関数(構文2、正式な構文はReplace関数のページを参照)を使用して、「:」を「~」で置き換えましょう。
構文2 文字列内の検索文字列を置換文字列に置き換える
Replace(文字列, 検索文字列, 置換文字列)
引数[文字列]にPartition関数を指定し、[検索文字列]に「":"」、「置換文字列」に「"~"」を指定すると、「0:999」「1000:1999」の中の「:」を「~」に変えられます(式2、図7、図8)。