• 締切済み

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 クロス集計クエリで見た目は上記の表形式になったのですが、 表示されるデータシート?で値の編集が出来ませんでした。 (集計結果なので当然?) 科目及びテストは今後追加される可能性が高いので テーブルまたはフォームを固定で持つことは出来ません。 何か良い方法はないでしょうか?

  • vue
  • お礼率44% (4/9)

みんなの回答

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.7

cafedemochaさん。素晴らしいです! 確認できました。 今まで何年間もこの運用はあきらめていました。 目からうろことはこの事です。 私から 20点差し上げたいです!

回答No.6

それは、クエリーのデザイン画面で、フィールドを選んで出している場合ですよね では無く、*のみを選択して、全てのフィールドを選択している状態にして、クロス集計クエリーをソースにしたテーブル作成クエリーを保存しておけば良いんですよ デザイン画面で、テーブルの表示を選ぶと、ソースとなるテーブルなりクエリーなりが、表示されますよね その、フィールドを個別にフィールドリストから選ぶのではなく、フィールドリストの先頭にある、*フィールドのみをフィールド行に表示させるだけ って事なんですけどねぇ

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.5

すみません。cafedemochaさん。 実は、自分も作ったことあるのですが、 > クロス集計クエリーが出来ているなら、それをデータソースにした > テーブル作成クエリーを作成 ですと、手作業でその都度クエリー作成になりませんか? 自動で実行させといて、新しい値が出てた場合、 それが項目名として出てくるとエラーになりませんでしょうか? その為、大分以前からこの方法は とらなくなりました。 VBAで対応されているのでしょうか? よろしければ、お教え下さい。よろしくお願いいたします。 だれが質問者か判らなくなり、申し訳ございません。

回答No.4

出来るのでしょうか? と言われても・・・実際、私の作った生産管理システム中で、これも運用してますのでねぇ まぁ、お試し下さい

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.3

残念ですが できないと思います。 このような運用は how-do-you-doさんの言われる通り、 エクセルの方が適していると思います。 ところで、cafedemochaさんの 言われることは できるのでしょうか? > クロス集計クエリーが出来ているなら、それをデータソースにした > テーブル作成クエリーを作成 私も、参考にしたいので、是非この方法をご指導願います。

vue
質問者

お礼

cafedemochaさんに教えて頂いた方法を一度試してみます。 出来るか分かりませんが、後日ご報告します。

回答No.2

クロス集計クエリーが出来ているなら、それをデータソースにした、テーブル作成クエリーを作成して、フィールドは、*部分を選んで、随時内容に応じてフィールドの追加削除が反映されるようにして、名前を付けて保存し、書き出したいテーブルに書き出してやれば、そのままの形で、ワークテーブルに書き出す事が出来ますし、テーブルですのでね、編集も自在に出来ますよ

vue
質問者

お礼

ありがとうございます。 一度試しにやってみます。結果は後日ご報告します。

回答No.1

>(集計結果なので当然?) そうですね クロス集計結果をエクセルにエクスポートではダメですか? または、蓄積されているテーブルのデータを全てエクセルにエクスポートして、 ピボットテーブルを使用するとか... 参考程度に...

vue
質問者

お礼

ありがとうございます。 エクセルに書き出して、修正をテーブルに反映させる 処理時間が結構かかりそうですが、方法がなければ しかたないですね。

関連する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で教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • 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で教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

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

    すみません、質問させてください。 アクセス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というのはどこに記述すればいいのかも、よくわかっていません。 具体的な操作を含めて教えてくださいますと大変助かります。

  • クロス集計の行合計

    いつもお世話になっております。 現在、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行目の値が入ってしまうので 困っています。 どなたかご教授、宜しくお願いします。

  • クロス集計の値の表示

    勉強不足のため悩んでいます。 accessにて、下記のようなテーブルとクロス集計を行ったクエリがあるとします。 T_評価  ID 評価 1  優 2  良 3  可 4 不可 Q_クロス集計 氏名  最低科目 科目1 科目2 科目3   AAA    3      2     1     3 BBB   4      3     4     3 CCC    2      1     2     2 このQ_クロス集計クエリをレポートにて出力させたいのですが、 T_評価テーブルを用いて、 氏名  最低科目 科目1 科目2 科目3 AAA    可    良   優    可 BBB  不可    可   不可   可 CCC    良    優   良    良 このようにクロス集計の値(ID)を置き換えたいのですが、 どのようにすればよいのでしょうか?

  • 成績の合計を集計するSQLを考えています。

    成績の合計を集計するSQLを考えています。 下記のようなテーブルをAccessで作成しました。 ID  科目 学期 中間 期末 学年 性別 0001  001  01  30   32  1  男子 0001  002  01  20  31  1  男子 0001  003  01  22  23  1  男子 0001  001  02  30  11  1  男子 0001  002  02  23  33  1  男子 0001  003  02  22  23  1  男子 ID  生徒を識別 科目 001=国語 002=数学 003=理科 学期 01=前期 02=後期 中間 科目のテスト結果を入力 期末 科目のテスト結果を入力 ※学期ごとに中間と期末があります。 下記のように学期別に同学年かつ同性の科目ごとの合計を集計する SQLを考えています。 期   性別  国語  理科  社会 前期  男子 200 250 300  前期  女子 110 200 340  後期  男子 150 230 360  後期  女子 170 250 350  学期別に集計をすることは出来たですが、さらに性別で分けることができませんでした。 アドバイスお願いします。 また、現在は SELECT [学年], iif( [学期]=1,"前期","後期") AS [学 期], Sum(IIf([科目]=1,[中間]+[期末],0)) AS [国 語], Sum(IIf([科目]=2,[中間]+[期末],0)) AS [数 学], Sum(IIf([科目]=3,[中間]+[期末],0)) AS [理 科] FROM テーブル名 GROUP BY [学年], [学期]; のようなSQL文を作成しました。

  • Accessのクロス集計

    データテーブル 地域コード 年  データ 12204   2002   70 12204   2003  70 12204   2004  70 12205   2002  100 12205   2003  100 12205   2004  100 12206   2002  50 12206   2003  50 12206   2004  50 地域テーブル 地域コード 市名  合併情報 12202   松戸市 12203   市川市   12204   野田市   12205    柏市   沼南町(沼南町は柏市は合併しましたという意味) 12206   昭南町 作成したいクロス集計表 市名  2002 2003 2004 野田市  70  70  70 柏市  150  150  150 沼南町 50  50  50 市名と年 のクロス集計で もし地域テーブルに合併情報があれば (上記の場合 柏市(100)+昭南町(50)) それを反映させて集計するという形を作りたいのですが クロス集計クエリを作るときの抽出条件に記述すればいいのか、それとも1からコードを記述しなければならないか どうやって作ったらいいかよくわかりません。 説明がちょっとわかりづらいのですが もしわかるかたがいらしたら抽出条件式やコードなど詳しく教えていただけないでしょうか よろしくお願いいたします。

  • 閲覧ありがとうございます。

    閲覧ありがとうございます。 C言語まったくわからないのですが、2次元配列を用いて c言語で Aさん、Bさん、Cさんの英語、国語、数学、物理のテストの得点を入力し、人毎の合計・平均と科目毎の合計・平均を表形式で出力するプログラムの作成をよろしくお願いいたします。 実行例 学生ごとに試験の得点を入力してください Aさん 英語=74 国語=69 数学=81 物理=72 Bさん 英語=69 国語=77 数学=84 物理=79 Cさん 英語=67 国語=73 数学=69 物理=71 成績集計結果: 英語 国語 数学 物理 合計 平均 Aさん 74 68 81 72 295 73.75 Bさん 69 77 84 79 309 77.25 Cさん 67 73 69 71 280 70.00 合計 210 218 234 222 平均 70.00 72.67 78.00 74.00 このようになるようにお願いいたします。

  • Accessの集計、0件のデータを表示させるには?

    Accessで選択クエリの集計を作りたいのですが…。 例えば、誰が何の質問を受けたか、というような、以下のようなテーブルがあるとします。 【A:データテーブル】 Aさん 数学 Aさん 理科 Bさん 社会 Aさん 理科 Bさん 理科 【B:教科マスター】 1 数学 2 社会 3 理科 AとBはリレーションでむすんで?あります。 で、Aテーブルを元に集計を使って以下のようにしたいのです。 Aさん 理科 2件 Aさん 数学 1件 Aさん 社会 0件 Aさんだけを抽出するのは、「抽出条件」で絞ればいいと思います。 教科のそれぞれの件数を出すには、「集計」で教科ごとにグループ化して教科をカウントすればいいと思うのですが、どうしても0(ゼロ)件のデータが出てきません。(上記の例で言うと、「Aさん 社会 0件」が出ない) 0を表示させるにはどこに何を書いたらいいのでしょうか?

  • 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等)でどのような記述を行えばいいでしょうか。 よろしくお願いします。