- 締切済み
Accessで成績一覧表をつくりたい。
私立高校で働いているAccess2003を勉強し始めた初心者です。 ExcelでならVBAを使えますが、 Accessでの成績処理に悪戦苦闘しています。 1学年10クラスで、実際は1クラス40人前後ですが、 後のエクセルでの処理を考えて、例えば3年生は 30101から31050までの番号と氏名が入ったIDというテーブルがあります。 点数の入力は点数を入力してもらうエクセルのブックを作っています。 例えば英語の長文演習だと英語_長文演習というブックの英語_長文演習というシートに 点数が入力されています。 ただ選択科目の場合はクラス単位の授業ではないので、 シートは以下のようにとびとびの名簿です。 番号 氏名 30101 赤川 次郎 30105 豊臣 秀吉 30112 織田 信長 30225 徳川 家康 30329 明智 光秀 VBAを使って不特定多数のエクセルのワークブックの中のシート全部から Accessへのデータの取り込みはできるようになりました。 次にIDというテーブルを基準に成績の一覧表をVBAで作ろうとしています。 番号 氏名 国語 英語_長文演習 30101 赤川 次郎 55 49 30102 井上 陽水 36 30103 宇多田 ヒカル 78 30104 遠藤 周作 65 30105 豊臣 秀吉 80 76 このようにして30101~31050までのデータを作って、 エクセルで各クラス50行ずつに読み込めるようにしたいのです。 LEFT JOIN(左外部結合)を使って手作業でやることはできるのですが、 科目数が多いため、なんとかVBAでできないかと思っているのですが、 何か方法があるでしょうか? わかりにくい質問かもしれませんが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
>Excelのデータのインポート→一覧表の作成→一覧表をExcelへエクスポート→Excelで成績処理です 1.Excelのデータ <A~C列は生徒番号、氏名、点数> がこれですね テーブルを追加します。 採点テーブル 採点ID 試験ID 生徒番号(氏名) 点数 これには科目、試験日、科目担当 等の付記が必要ですね この部分を試験テーブルとして提案しました ただし記述ミスがありましたので訂正して下さい 試験テーブル 試験ID(オートナンバー型 主キー) 試験名 科目担当 試験日(日付型) 試験科目 2.一覧表の作成 成績テーブルのつもりですが如何でしょうか 採点テーブルと試験テーブルより追加、編集します。 これをするにはVBAとSQL文(Insert文、Update文)が必要です。 Access VBAの基礎 http://www.geocities.jp/cbc_vbnet/top/nyumon.html 内のDoCmdオブジェクト→20 RunSQLメソッド をご覧ください 追伸 前回は省きましたが毎年クラス替えがありますね 在席テーブルを追加してこれに 対して成績テーブルを展開しなければならない 在席テーブル 在席ID 年度 生徒ID クラスID
- chayamati
- ベストアンサー率41% (260/624)
参考意見です まず データ処理のアプローチの仕方がExcelとAccessでは大きく異なります。 ・Excel:一つのBookでブック単位で処理します。 ・Access:複数のテーブルでレコード単位で処理します。 テーブルの一部はテーブル間にそれどれの主キーを用いて関連付けなされます。 テーブルはシステムの基本でテーブル設計の良否がシステム全体の良否につながります。 ※>次にIDというテーブル AccessではIDはインデックスの意味でテーブル内の主キーの項目(フィールド)として用います。 以上前置きですが、何のことか理解できないでしょう 「LEFT JOIN」を使っておられるのでテーブルは複数作成されていると推察します。 テーブルの内容の検討(公開)から始めてください。 入力する人は何人ですか テーブルの一例 生徒テーブル 生徒ID(オートナンバー型 主キー) 生徒コード(長整数型 重複なし) 生徒氏名(テキスト型 IME入力モードひらがな IME変換モード人名/地名) ふりがな(テキスト型 IME入力モードひらがな IME変換モード無変換) 誕生日(日付型) 入学年月日(日付型) クラステーブル クラスID(オートナンバー型 主キー) 学年(整数型) クラス名(テキスト型 IME入力モードひらがな IME変換モード一般) 科目テーブル 科目ID(オートナンバー型 主キー) 科目名(テキスト型 重複なし IME入力モードひらがな IME変換モード一般) 試験テーブル 試験ID(オートナンバー型 主キー) 試験名 試験日(日付型) 試験日 成績テーブル 成績ID(オートナンバー型 主キー) 試験ID(長整数型) 生徒コード(長整数型) 生徒ID(長整数型) 国語点数(整数型) 英語長文演習点数(整数型) 科目3点数(整数型) 科目4点数(整数型) 科目5点数(整数型) 科目6点数(整数型) 科目7点数(整数型)
お礼
回答ありがとうございます。 勤務先の同僚は全員Excelは使えますが、Accessを使える人はほとんどいません。そのため、Accessでテーブルを作ってそこに入力しているわけではないのです。 試験後に各科目担当(各学年20~30名)がExcelのシートに点数を入力します。 シートはA~C列までは共通です。A~C列は生徒番号、氏名、点数の順番で1行目は見出し、2行目以降にデータが入るようになっています。 ただ質問にも書いたように選択科目などはクラス単位で行っていないため、選択科目専用の名簿になっています。そのため生徒番号もとびとびになります。それらをまとめて、出席番号順の一覧表に作成したいと思っています。 最初からAccessに入力してもらうと簡単ですが、そうなると入力の手間が増えるため、現状は無理です(自分のExcelに入力した点数をコピペで入力する担当者が多いため)。 ExcelのデータをAccessへインポートするVBAはなんとかできました。ですので、Excelから入力されたデータをAccessに読み込むとテーブルは科目担当者の人数分だけの20~30個できるわけです。 やりたいことはExcelのデータのインポート→一覧表の作成→一覧表をExcelへエクスポート→Excelで成績処理です。この処理の中で一覧表の作成が (ExcelのVBAで行うと) 一番大変なので、なんとかしたいのです。一応、各担当のExcelのworkbookからデータを読み込んで一覧表を作るマクロをExcelのVBAで作れてはいるのですが、Accessでもっと簡単にできないかと思っています。 偏差値や順位計算を考えるとAccessよりもExcelで処理する方が簡単と思っているので、最後の成績処理はExcelで行いたいと思っています。その下準備まで(成績一覧表を作るまで)をAccessでと考えています。 わかりにくいかもしれませんが、よろしくお願いします。