Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

Query 変則的なグループ分けを可能にするクエリ《非等価結合》
 (Ac97,Ac2000,Ac2002)
Accessで、データを集計する場合、予めそれぞれのデータがグループ分けされている必要があります。

それぞれのグループとしての情報がデータとして、格納されていなければなりません。
たとえば、あるデータを得点別に集計したいとき、そのグループの範囲が固定であれば、
ピボットテーブルを使用することにより簡単に集計できます。
(例:10 点毎に集計とか、20 点毎とか・・・)

ところが、このグループの間隔が変則的な場合は、ちょっと困ります。
ユーザー定義関数を作成しても良いのですが、これは VBA が理解できる人で無ければ、
メンテナンスができなくなってしまいます。

これは、データのグループ分けをマスターテーブルに設定し、それを元にクエリーを作成する方法です。
「成績」 は、集計データの格納されているデータテーブルです。

元データ
「クラス」 は、グループの範囲を決定するためのマスターテーブルです。

クラス分け用マスタデータ

この 「クラス」 テーブルの作成がとても大切です。
まず、「クラス」 フィールドには、そのクラス名を入力します。
「範囲」 フィールドには、1目で解る範囲名をつけます。
「得点S」 は、範囲内の最小得点を入力します。
「得点E」 は、範囲内の最大得点を入力します。

後に、範囲が変更になった場合、このテーブルの中身を変更するだけで、
集計結果も変わります。

まず、新規にクエリのデザイン画面を開いて、 「成績」 と 「クラス」 を追加します。
但しフィールドの結合はしません。

クエリグリッド

ここで、「出席番号」 と、「得点」 フィールドは 「成績」 テーブルから持ってきます。
「クラス」 と、「範囲」 は 「クラス」 テーブルから持ってきます。

次に、得点フィールドに抽出条件式を入力します。

    Between [クラス]![得点S] And [クラス]![得点E]

ここの並べ替えを、 「降順」 に設定します。

実行結果 無事、それぞれの得点に範囲が設定されました。
後はこのクエリの 「クラス」 か 「範囲」
を元に、集計クエリを作成してください。
≪注意≫

「範囲」を列名としたクロス集計クエリを作成した場合、範囲の順番には並びません。
これは文字列の昇順 (「21〜50」の方が「6〜20」より左に来ます) になるためです。

これを回避するためには、あらかじめ 「列見出しを固定」 に設定する必要があります。
「列見出しを固定」 にする方法は、こちら




この頁のTOPへTop

【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら

Copyright(C) pPoy 2000-2001