[Access 2016/2013/2010/2007]
本記事では、図1のような[Q_受注明細]クエリの[単価]フィールドを1000円幅の価格帯に分類して[数量]フィールドを合計し、価格帯ごとの売上数を調べます。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-01.png?resize=643%2C301&ssl=1)
図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)。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-02.png?resize=421%2C98&ssl=1)
図2 [Q_受注明細]クエリをもとに新規クエリを作成し、[フィールド]欄に式1と[数量]フィールドを追加する。「数量」の前に「売上数:」を入力する。
このクエリを実行すると、[Q_受注明細]クエリの各レコードの[単価]フィールドが1000円幅の価格帯に変換されます(図3)。
既定のフォントでは「:」の位置や数値の桁が揃いませんが、データシートのフォントを等幅フォントである「MSゴシック」に変更すると、きれいに揃います(図4)。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-03.png?resize=730%2C394&ssl=1)
図3 [単価]から[価格帯]が求められた。[ホーム]タブの[フォント]の一覧から[MS ゴシック]を選ぶ。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-04.png?resize=238%2C178&ssl=1)
図4 「:」の位置や桁が揃った。
メモ
ただし、既定のプロポーショナルフォント(文字によって幅が違うフォント)では文字数が同じでも桁が揃わないので、ここでは等幅フォント(どの文字も同じ幅のフォント)に変更しました。
Step2 価格帯でグループ化して売上数を集計する
クエリをデザインビューに切り替え、集計行を追加します。[価格帯]フィールドをグループ化し、[売上数]フィールドを合計します(図5、図6)。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-05.png?resize=648%2C446&ssl=1)
図5
(1)[デザイン]タブの[集計]ボタンをクリックして[集計]行を追加する。
(2)[価格帯]フィールドで[グループ化][昇順]を選択する。
(3)[売上数]フィールドで[合計]を選択する。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-06a.png?resize=356%2C158&ssl=1)
図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),":","~")
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-07.png?resize=513%2C113&ssl=1)
図7 [価格帯]フィールドを式2のように修正する。
![](https://i0.wp.com/officek.net/wp-content/uploads/2017/09/aqt-kakakutai-08.png?resize=356%2C158&ssl=1)
図8 価格帯の範囲をわかりやすく表示できた。