価格帯別に売上数を集計する

[Access 2016/2013/2010/2007]

本記事では、図1のような[Q_受注明細]クエリの[単価]フィールドを1000円幅の価格帯に分類して[数量]フィールドを合計し、価格帯ごとの売上数を調べます。

図1 [単価]を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)。

図2 [Q_受注明細]クエリをもとに新規クエリを作成し、[フィールド]欄に式1と[数量]フィールドを追加する。「数量」の前に「売上数:」を入力する。

このクエリを実行すると、[Q_受注明細]クエリの各レコードの[単価]フィールドが1000円幅の価格帯に変換されます(図3)。

既定のフォントでは「:」の位置や数値の桁が揃いませんが、データシートのフォントを等幅フォントである「MSゴシック」に変更すると、きれいに揃います(図4)。

図3 [単価]から[価格帯]が求められた。[ホーム]タブの[フォント]の一覧から[MS ゴシック]を選ぶ。

図4 「:」の位置や桁が揃った。

メモ

戻り値には桁に合わせて適切なスペースが補われる
Partition関数は「最小値:最大値」の形式で戻り値を返しますが、その際、各戻り値の桁が揃うように「最小値」と「最大値」の先頭にスペースが補われます。上の例では「最小値」と「最大値」が4桁に揃うように、「□□□0:□999」のようにスペースが入ります。
ただし、既定のプロポーショナルフォント(文字によって幅が違うフォント)では文字数が同じでも桁が揃わないので、ここでは等幅フォント(どの文字も同じ幅のフォント)に変更しました。

Step2 価格帯でグループ化して売上数を集計する

クエリをデザインビューに切り替え、集計行を追加します。[価格帯]フィールドをグループ化し、[売上数]フィールドを合計します(図5図6)。

図5
1)[デザイン]タブの[集計]ボタンをクリックして[集計]行を追加する。
2)[価格帯]フィールドで[グループ化][昇順]を選択する。
3)[売上数]フィールドで[合計]を選択する。

図6 価格帯ごとに売上数を集計できた。

Step3 Replace関数で「:」を「~」に変えて見やすくする

「0:999」「1000:1999」の表記ではわかりづらいので、Replace関数構文2、正式な構文はReplace関数のページを参照)を使用して、「:」を「~」で置き換えましょう。

構文2 文字列内の検索文字列を置換文字列に置き換える
Replace(文字列, 検索文字列, 置換文字列)

引数[文字列]にPartition関数を指定し、[検索文字列]に「":"」、「置換文字列」に「"~"」を指定すると、「0:999」「1000:1999」の中の「:」を「~」に変えられます(式2図7図8)。

式2 0円以上4999円以下の[単価]を1000円幅に分けて「○~○」の形式で表示する
価格帯: Replace(Partition([単価],0,4999,1000),":","~")

図7 [価格帯]フィールドを式2のように修正する。

図8 価格帯の範囲をわかりやすく表示できた。

スポンサーリンク

関連記事