• 締切済み

アクセス クロス集計と単純集計の齟齬について

すみません、質問させてください。 アクセス2010を使用しています。 下記のような元の表があります。 ID 試験科目  試験形式    合否(1/0)  当該科目選抜試験参加(1/0) 1  国語    タイプ1    1        1 1 国語    タイプ2    0     1 1  国語    タイプ3    1     1 2  国語    タイプ1    0        0 2 国語    タイプ2    0     0 2  英語    タイプ1    0     1 ※学生は5教科のなかから任意の科目を最低1教科、最大5教科受験しています。 ※各教科には複数の試験形式があります。(例えば国語なら、国語の中でタイプ1~3の複数の試験がある)どれか一つのタイプの試験で合格すると、次の選抜試験に参加する「権利」を得ます。 ※選抜試験参加は任意(希望した者のみ参加)です。また、複数の教科で合格していても、選抜では一人一科目のみしか参加できません。(つまり、英語と国語で合格していても、どちらか一科目の選抜試験のみにしか参加できない。合格しても参加しない者もいる) ※同一教科の複数タイプの試験を受け、タイプ1合格、タイプ2不合格で、選抜試験に参加した場合、タイプ2のレコードにおいても選抜試験参加のフラグがたっている。 このような状況で下記のような集計をしました。 1、元の表から、クエリでID、科目、当該科目選抜試験参加を抜き出し、「固有のキー」をオンにし、科目別選抜試験参加者を重複抜きで抽出した一覧(表A)を作成。  選抜試験参加者を科目ごとに単純集計(集計1)。 2、元の表から、クエリでID、科目、合否=1のみを抜き出し、「固有のキ」ーをオンにし、科目別合格者(選抜試験未参加を含む)を重複抜きで抽出した一覧(表B)を作成。 3、複数の科目で合格した学生が、選抜試験に参加したのか、したとしたらどの教科の選抜試験に参加したのかを集計するクロス表として、   表AとBのクロス集計を行ない、   行=表Aの科目名でグループ化   列=表Bの科目名でグループ化   値=表Aの選抜試験参加フラグをカウント  として実行しました。 目的は下記のような、「国語に合格した生徒のうち、国語(もしくは他の各教科)の選抜に参加した生徒は何人か」がわかるようなクロス表(表C)を作ることです。             合格した科目      国語 英語 数学 理科 社会 選 国語 10 抜 英語 50 参 数学 1 加 理科 1 科 社会 20 目 大体それらしい数字が出たのですが、表Cの斜めの列=つまり国語で合格し国語の選抜を受けた生徒の数、と、集計1で集計した数が合いません。 何が問題なのでしょうか。 長い説明ですみませんが、どうぞご教示をお願いします。 当方Access素人で、SQLというのはどこに記述すればいいのかも、よくわかっていません。 具体的な操作を含めて教えてくださいますと大変助かります。

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> 手作業でデータ検証できる分量ではないのです。 > Excel張りつけでデータ検証できるなら質問しません。。 いきなり本番データでやらずに、サンプルデータで検証するほうが解決は早いと思います。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 表AとBのクロス集計を行ない、 これはどうやったのですか? この段階でクロス集計せずに一覧化して、EXCELにでも貼り付けて データを検証してください。特に行数。

dd-dory
質問者

補足

文字通りです。 両者のIDにリレーションシップを設定した上で、クロス集計クエリで記述のとおりの入力値で作成しました。 手作業でデータ検証できる分量ではないのです。 Excel張りつけでデータ検証できるなら質問しません。。 一度にコピー張りつけできる分量もこえてしまっていますので。

関連するQ&A

  • Access2003 クロス集計で集計値を四捨五入

    ☆以下のようなテーブルで、フィールド[ID]~[点数]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [クラス]  [科目]  [点数]     1     A     英語    11    2     B     英語    22    3     C     数学    33    4     A     国語    44   5     B     数学    55    6     C     国語    66    7     B     国語    77   8     C     英語    88     9     A     数学    99     =========================================== ☆上記のテーブルをクロス集計クエリで集計する ・フィールド[クラス]を行見出しに設定、 ・フィールド[科目]を列見出しに設定、 ・フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 =========================================== [クロス集計結果]   合計   英語  国語  数学       A  154   11    44    99        B  154   22    88    55     C  187   99    77    33  =========================================== [課題] クロス集計クエリで、集計値を四捨五入する (1) フィールド[クラス]を行見出しに設定、    フィールド[科目]を列見出しに設定、    フィールド[点数]を集計する項目にし主計方法を「合計」に設定する。 (2) クロス集計の値を、下1桁で四捨五入した値を表示する。   (3) 「合計」の値を、下1桁で四捨五入した値を表示する。 ※ クロス集計した合計値を、四捨五入した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]   合計   英語  国語  数学     A  150   10    40   100        B  150   20    80    60     C  190   90    70    30  ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のように、クロス集計クエリでの集計値を四捨五入して 表示させたいのですが、どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • ACCESSでクロス集計風に表示したい

    以下の様なテーブルを 科目 テスト 得点 ------------------ 国語 1中間 50 国語 1期末 60 国語 2中間 55 国語 2期末 65 国語 3期末 70 英語 ・   ・  ・  ・   ・  ・  ・   ・ 数学 1中間 70 数学 1期末 80 数学 3中間 75 数学 2期末 70 数学 3期末 85 以下のような表形式で表示したいと考えてます。    1中間 1期末 ・ ・ 2期末 3期末 国語  60  55  ・ ・  65  70 英語   ・   ・   ・ ・  ・   ・ 数学  70  80  ・ ・  70  85 クロス集計クエリで見た目は上記の表形式になったのですが、 表示されるデータシート?で値の編集が出来ませんでした。 (集計結果なので当然?) 科目及びテストは今後追加される可能性が高いので テーブルまたはフォームを固定で持つことは出来ません。 何か良い方法はないでしょうか?

  • Access2003 クロス集計クエリでの合計

    ☆以下のようなテーブルで、フィールド[ID]~[C]があり、文字および数字のデータが混在しています。   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== (テーブル(1)) [ID]  [A]      [B]    [C]     1    111     英語    10    2    222     英語    20    3    333     数学    30    4    111     国語    40   5    222     数学    50    6    333     国語    60    7    222     国語    70   8    333     英語    80     9    111     数学    90     =========================================== [課題] クロス集計クエリを作成する (1) フィールド[A]を行見出しに設定、    フィールド[B]を列見出しに設定、    フィールド[C]を集計する項目に設定する。   (2) フィールド[C]の値を列ごとに平均を計算し、    行ごとに合計を計算する。   ※ 列と行で、それぞれ集計した値を表示する   ↓  ↓  ↓  ↓  ↓  ↓  ↓  ↓ =========================================== [クロス集計結果]     合計  英語  国語  数学     111  140   10    40    90        222  140   20    70    50     333  170   80    60    30  --------------- 平均  150   36     56   56 ===========================================   ↑  ↑  ↑  ↑  ↑  ↑  ↑  ↑    上記のようなクロス集計クエリの結果を表示させたいのですが、 どうすればよろしいでしょうか? また、クエリだけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • クロス集計の行合計

    いつもお世話になっております。 現在、Access2003でアプリケーションを作成しています。 以下のようなデータがあり テーブル:科目マスタ [科目_ID] [科目] 1 数学 2 国語 3 英語 テーブル:トランザクション [学籍番号] [科目] [点数] 001 1 80 001 2 79 001 3 60 002 1 83 002 2 67 003 3 31 といったデータが存在する場合に クロス集計を行って [学籍番号] [合計得点] 001 219 002 181 のようなデータを作成し、 レポートに表示する場合に、平均の数値を計算したい場合は どのようにすればいいんでしょうか? 他にも全教科合計に対する各教科の割合なども 計算したいと思います。 レポートの詳細の部分で (txtAvgはテキストボックスコントロール名) Me("txtAvg").ControlSource = 計算 というふうにしてると、すべて1行目の値が入ってしまうので 困っています。 どなたかご教授、宜しくお願いします。

  • 毎回変動するピボット結果をエクセル集計表に入力する

    各々別シートで作成している国語、数学、理科、社会、英語の各教科データを1つの一覧表にまとめています(=元データ)。 データ内容は、上記の5教科ごとに クラス、学籍番号、生徒名、合格・不合格者数、のデータが入っています。 この元データでピボットテーブルを別シートに作成しました。 このピボット結果を別シートに作成している「集計表」に簡単確実に入力する方法はありますか? 「集計表」は、クラスごと、かつ、教科ごとの合格不合格者数を試験実施ごとに報告する資料です。 今はピボット結果を各教科ごとに絞りこみをかけ、 それを該当するクラスの各合格不合格者数欄に、手入力かコピペしています。 ただ、規模が大きいのでクラスが50クラスほどあり、教科も5教科あるので、 面倒なのは我慢できたとしても、間違いが発生するリスクもあり、簡単確実に入力できないかなと思案しています。 ピボット結果を扱いやすいように値コピーしてエクセルの単なる表にしたり、リンクコピーしたりして、 そのコピーから「集計表」に数式いれることを考えたりしました。 また、VlookUP関数で、 教科ごとに絞りこんだピボット結果のクラスを参照して、 「集計表」の合格不合格者各欄に返すことができるのかなと考えてもみたのですが、できるのでしょうか… 試験実施ごとに通用するようにフォーマットとして作りたいのですが…わかりません。 試験実施ごとに、 ①合格不合格者数が変動する ②①によりクラスに関しても、 いつもあるクラスやないクラスが発生するなど変動する、ので、 難しいことするよりも丁寧に手入力した方が、 逆にファイル操作や数式を間違ったりするリスクを考えると、 結局、同じかなと思ったりもしています。 エクセルや大量データの扱いや関数が得意な方ではなく、 関数もSUMくらいしか使い慣れていません。 きっと何か方法はあると想像はするのですが、 使いこなせない者にとっては、便利な機能は逆に不便に感じたりで困ってます。 何がしたいか伝わりましたでしょうか… 初心者でもできるような方法を教えていただけると助かります。 よろしくお願いします。

  • エクセルの複数列の集計

    エクセル集計について質問です。 下記のように、列が複数あって、各教科ごとに集計をしたいのですが、列が複数ある場合、どの関数を使えばいいでしょうか? よろしくお願いします。       朝     昼    夜 9-12 英語 2 理科 3 国語 3 1-3 国語 1 社会 2.5 算数 1.4 4-6 社会 1.5 国語 3 理科 2 7-9 理科 1 算数 1.3 算数 2 9-12 算数 1 英語 1 算数 1

  • ACCESS重複した場合数値の高いレコードのみ表示

    ACCESSで成績管理をしています。 同一人物が同じ科目を複数回受験した場合、「成績の数値が高いレコード」のみを残し表示をしたいと考えています。 テーブル名:T_成績 ID 生徒番号 氏名  科目  成績 1  12001    田中  数学  10 2  12001    田中  英語  10 3  12001    田中  英語  20 4  12001    田中  国語  10 5  12002    吉田  数学  30 6  12002    吉田  数学  40 7  12002    吉田  国語  20 ↓ ID 生徒番号  氏名 科目  成績 1  12001     田中  数学  10 3  12001     田中  英語  20 4  12001     田中  国語  10 6  12002     吉田  数学  40 7  12002     吉田  国語  20 クエリ(SQL等)でどのような記述を行えばいいでしょうか。 よろしくお願いします。

  • 小学校6年生算数 

    60人の生徒が算数、国語、社会の試験を受け、下のような結果が得られました。    1.  3科目すべて不合格だった生徒は3人。    2.  算数と国語の両方、国語と社会の両方、社会と算数の両方に合格している生徒は、それぞれ13人、12人、14人います。    3.  算数、国語の少なくとも一方、国語と社会の少なくとも一方、社会と算数の少なくとも一方に合格している生徒は、それぞれ48人、42人、49人います。     次の問いに答えなさい。 1.  算数のみに合格している生徒は何人いますか。 2.  3教科すべてに合格している生徒は何人いますか。 3.  算数に合格している生徒は何人いますか。                             答えは  1. 15人  2.  7人  3.  35人 すみません、教えてください。 宜しくお願いします。

  • 中1の数学の宿題教えて下さいm(__)m

    X人のクラスで、英語と国語のテストを実施した。その結果、英語のテストに合格した生徒はクラスの5/9、国語のテストに合格した生徒はクラスの4/9、両方の教科に合格した生徒はクラスの1/5になった、また両方の教科に不合格となった生徒は9人であった。次の各問に答えよ。 (1)英語、国語の少なくとも一方に合格した生徒の人数をXを用いて表せ。 (2)クラスの人数Xを求めよ。 (3)英語のみに合格した生徒の人数を求めよ。

  • エクセルでの集計・・・再度です

    お世話になります。 エクセルでの集計につきまして 思っていたよりも複雑でわからないため、 再度質問させていただきました。 内容 名前 教科名 順位  田中 国語  8 佐藤 算数  5 鈴木 理科  1 山田 国語  2 田中 算数  3 佐藤 算数  4 田中 国語  1 佐藤 理科  2 鈴木 算数  8 田中 理科  11 という感じで、名前・教科・順位の羅列が並んでいます。 同じ生徒がどの教科で、順位がどうであったかを集計したいのです。 ちなみに、もし可能ならば集計時に 1番、2番、3番、4番以下 という風にできればいいなと思っています。 ピポットテーブルを使用すると良いと お伺いしたのですが、この場合でも可能でしょうか? どうぞよろしくお願いします。

専門家に質問してみよう