- 締切済み
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)
- その他(データベース)
- 回答数7
- ありがとう数17
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- ryuu001
- ベストアンサー率61% (46/75)
cafedemochaさん。素晴らしいです! 確認できました。 今まで何年間もこの運用はあきらめていました。 目からうろことはこの事です。 私から 20点差し上げたいです!
- cafedemocha
- ベストアンサー率29% (232/789)
それは、クエリーのデザイン画面で、フィールドを選んで出している場合ですよね では無く、*のみを選択して、全てのフィールドを選択している状態にして、クロス集計クエリーをソースにしたテーブル作成クエリーを保存しておけば良いんですよ デザイン画面で、テーブルの表示を選ぶと、ソースとなるテーブルなりクエリーなりが、表示されますよね その、フィールドを個別にフィールドリストから選ぶのではなく、フィールドリストの先頭にある、*フィールドのみをフィールド行に表示させるだけ って事なんですけどねぇ
- ryuu001
- ベストアンサー率61% (46/75)
すみません。cafedemochaさん。 実は、自分も作ったことあるのですが、 > クロス集計クエリーが出来ているなら、それをデータソースにした > テーブル作成クエリーを作成 ですと、手作業でその都度クエリー作成になりませんか? 自動で実行させといて、新しい値が出てた場合、 それが項目名として出てくるとエラーになりませんでしょうか? その為、大分以前からこの方法は とらなくなりました。 VBAで対応されているのでしょうか? よろしければ、お教え下さい。よろしくお願いいたします。 だれが質問者か判らなくなり、申し訳ございません。
- cafedemocha
- ベストアンサー率29% (232/789)
出来るのでしょうか? と言われても・・・実際、私の作った生産管理システム中で、これも運用してますのでねぇ まぁ、お試し下さい
- ryuu001
- ベストアンサー率61% (46/75)
残念ですが できないと思います。 このような運用は how-do-you-doさんの言われる通り、 エクセルの方が適していると思います。 ところで、cafedemochaさんの 言われることは できるのでしょうか? > クロス集計クエリーが出来ているなら、それをデータソースにした > テーブル作成クエリーを作成 私も、参考にしたいので、是非この方法をご指導願います。
- cafedemocha
- ベストアンサー率29% (232/789)
クロス集計クエリーが出来ているなら、それをデータソースにした、テーブル作成クエリーを作成して、フィールドは、*部分を選んで、随時内容に応じてフィールドの追加削除が反映されるようにして、名前を付けて保存し、書き出したいテーブルに書き出してやれば、そのままの形で、ワークテーブルに書き出す事が出来ますし、テーブルですのでね、編集も自在に出来ますよ
お礼
ありがとうございます。 一度試しにやってみます。結果は後日ご報告します。
- how-do-you-do
- ベストアンサー率56% (59/104)
>(集計結果なので当然?) そうですね クロス集計結果をエクセルにエクスポートではダメですか? または、蓄積されているテーブルのデータを全てエクセルにエクスポートして、 ピボットテーブルを使用するとか... 参考程度に...
お礼
ありがとうございます。 エクセルに書き出して、修正をテーブルに反映させる 処理時間が結構かかりそうですが、方法がなければ しかたないですね。
関連する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で教えていただければ 幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- 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で教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- アクセス クロス集計と単純集計の齟齬について
すみません、質問させてください。 アクセス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というのはどこに記述すればいいのかも、よくわかっていません。 具体的な操作を含めて教えてくださいますと大変助かります。
- 締切済み
- その他MS Office製品
- クロス集計の行合計
いつもお世話になっております。 現在、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行目の値が入ってしまうので 困っています。 どなたかご教授、宜しくお願いします。
- 締切済み
- Visual Basic
- クロス集計の値の表示
勉強不足のため悩んでいます。 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 このようになるようにお願いいたします。
- 締切済み
- C・C++・C#
- 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等)でどのような記述を行えばいいでしょうか。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
cafedemochaさんに教えて頂いた方法を一度試してみます。 出来るか分かりませんが、後日ご報告します。