• ベストアンサー

過去のテスト成績(得点)を呼び出す方法

毎年、国語と算数の学力テストを行っています。結果が複数のシートに現在の学年が過去の学年で行ったテストの点数が出席番号順に記録されています。 毎年クラス編制替えをしていたり、転出入があるなどで年度ごとに児童の出席番号は変わるので、特定児童の年度別得点推移を確認するのに手間がいります。 そこで、特定の児童名を入力する等簡単な操作で、年度ごとの得点データを呼び出せるような方法はないか模索しています。 エクセルを使用し、できればシンプルな関数などで対応できる方法があればご教授願いたいのですが。 どなたかご存じの方、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

この手のご相談で最初に確認しておく必要があるのは、「同姓同名の生徒」の扱いはいったいどうなってるのか、という点になります。 毎年クラス替えで出席番号が変わるのは仕方ないとして、同姓同名の子の識別は一体どうしてるのでしょうか。 クラス替え後にその子の去年の成績としてどっちの記録を見れば良いのか識別するには、例えば名前の方に「藤子不二雄A」「藤子不二雄B」みたいに「同姓同名じゃない名前」を記入して同姓同名を回避するか、あるいは「出席番号」じゃなく在籍期間を通じて共通の「生徒番号」を振っておく、といった配慮が必要になります。 という前提の上で、ここでは「同姓同名は無い、すべて固有の名前が記録されている」前提でお話しします(といっても「生徒番号」でも、やることは全く一緒ですが)。 次に、できるだけ計算を簡単にしたいなら、成績リストの作り方からまず工夫して作成します。 例えば シート2のB列に去年の生徒の名前(あるいは生徒番号)を羅列 シート2のA列には去年のクラス名の一覧(使いませんが必要なら出席番号を並べても良い) シート2のC列に各生徒のあるテストの得点を羅列 シート2のD列に各生徒の別のテストの得点を羅列  : といった具合に準備しておけば シート1のB列に今年の生徒の名前(あるいは生徒番号)を記入 C列にその子の去年の「あるテスト」の得点は =SUMIF(Sheet2!B:B,B2,Sheet2!C:C) あるいは =VLOOKUP(B2,Sheet2!B:C,2,FALSE) のようにさくっと取り出してきます。 勿論もうもう一工夫して、 =IF(VLOOKUP(B2,Sheet2!B:C,2,FALSE)="","",VLOOKUP(B2,Sheet2!B:C,2,FALSE)) あるいはご利用のエクセルのバージョンが不明のご相談ですが =IFERROR(IF(VLOOKUP(B2,Sheet2!B:C,2,FALSE)="","",VLOOKUP(B2,Sheet2!B:C,2,FALSE)),"") のようにして、「点数の記入が無ければ異なる処置をする」「今年の四月から転入して来た(=去年のリストに無い新しい子)ら別の処置をする」ように細工を追加しても構いません。 #しばしば見かける矛盾したご相談ですが、「シンプルにしたい」と言いながら、実は蓋を開けてみると「いま使ってるエクセルのまま何も変えたりとかしたくない」のでもっとずっと複雑な事になってしまっても構わない、という方も少なくはありません。 そういう縛りがある場合は、もっと具体的に今のあなたの「変えたくないとは具体的にどーなってるのか」とかを、詳しく目に見えるように情報を添えてご相談を出しなおしてもらう必要があります。

shin919
質問者

お礼

詳細な情報提供、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

データベースのキーとして、識別番号(ID)を作製しておくことが肝要です。それさえあれば、特定の人物のレコード(行)のみ抽出するのは、オートフィルタのボタンをクリックするだけでできますね。 ID は、データがいくら増えても個人を特定できるよう、一意な番号とすることが必要です。この目的のために、年月日や時間を番号の一部に与えることが多いです。         A       B  C   D  E   F   G   H   I (1)  20130401001 (2)  2013-04-01-001-記号 (3)  2013          -  04  -  01  -  001  -  記号 ※「-」や「記号」は、不要であれば、なくても構いません。 ※「数値」のセルは、Excel の仕様により、15 桁以内にします。超えてしまう場合は、列を分けます。 ※数字に数字でない文字を付加すると、全体では「文字列」となります。 VLOOKUP 関数などの数式を使う関係で、なるべく(1)のタイプの ID にしたほうが計算がラクになります。ただし(3)を数式で結合することにより別の列に(1)を作るということも、後で紹介するとおり、簡単にできます。 オートフィルタにより簡単に、「2013 年 4 月 1 日に入学/転入してきた生徒(児童)」のみを表示できます。具体的には、「20130401001 以上で 20130501001 より小さい」などの条件でできます。 レコードの「並べ替え」(ソート)は、データタブからもできるし、オートフィルタのボタンからもできます。つまりグチャグチャな順番になっていても、ID で並べ替えれば、いつでも元どおりの順番に戻せます。 また「=date(a4,b4,c4)」という数式により、いつでも日付のシリアル値を算出できます。「2013/4/1」というシリアル値は、セルの書式を設定することにより、「平成 25 年 4 月 1 日(月)」とか「H25.4」とか、自在に表示することが可能です。 個人の ID その他の基礎情報から成る一覧を Sheet1、成績などの記録表を Sheet2、というふうにシートを分けると、後で管理がしやすくなるはずです。 Sheet2 にID を記入すると、それに該当する氏名などを Sheet1 から拾ってきて自動的に表示する数式を、Sheet2 にセットしておきます。 テストを表す番号も用意すると、便利です。この番号も別シートに分けて(必要な場合は)そこからテスト名称を数式で拾うなどしてもいいのですが、数式の量が増えるほど、ファイルが重くなります。そのため、この番号をあちこちで繰り返し使用する頻度が低いとすれば、必ずしもシートを分ける必要はないと思います。 添付図では、次式を記入しています。Sheet1、Sheet2 それぞれにオートフィルタを取り付けましょう。そして ID で絞り込み、その人だけの成績の履歴を表示させます。 Sheet1 H4 =0+(a4&text(c4,"00")&text(e4,"00")&text(g4,"000")) Sheet2 H15 20130401004  など I15 =vlookup(h15,sheet1!$H:$W,2,) Sheet1 に新しい人を追加する際は、次のとおりに操作します。 (1)  既存データの最下端から下に 3、4 行くらい空けた位置に記入 (2)  姓名の間にスペースを入れるなど、必要な加工、修正を文字列に施す。 (3)  (2)が完全に終わったら、必ず、氏名の振り仮名を正しく整備 (4)  追加した人たちだけを対象として、クラスに関係なく、並べ替え。振り仮名の順で並びます。既存データは、3、4 行空けた効果により、Excel が自動認識する並べ替えの対象範囲に含まれない。 (5)  空けていた 3、4 行を削除(隙間は 1 行も残さない) ※(2)と(3)の順序を逆にすると、振り仮名が乱れて意図どおりにならないことがあります。 ※振り仮名は、PHONETIC 関数で抜き出すことができます。当然、整備されていないまま抜き出しても、おかしな振り仮名が表示されます。 ※姓と名を 2 列や 3 列に分けても構いませんが、姓だけでの抽出などを行う機会はそれほどないのであれば、上のとおりスペースを入れる程度でもよいでしょう。 ※スペースを基準にして、姓のみ、名のみを抽出することは、FIND、LEFT、MID、RIGHT 関数により可能です。 セルの振り仮名を表示させるショートカットキーは、Shift+Alt+↑です。振り仮名のフォントの大きさなどを設定したい場合は、セル範囲を選択しておいて、ホームタブの振り仮名のボタンの右にある▼マークをクリックするなどします。

shin919
質問者

お礼

詳しい説明、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル・関数で成績の絞込みの仕方

    エクセル2002を使用しています。 成績処理のための絞込みを行いたいと考えています。 A ・・・・      E 2101         31 2102         51 ・ ・ ・ 2332         47 上記のようにA列は学年・クラス・出席番号の通し番号、E列にはある科目の得点が入力されています。 たとえば2年1組で、得点が30~50点の範囲に何人いるかを知りたいわけです。 自分でやってみて、COUNTIFを利用した場合、 A列かE列どちらかを絞り込むことは出来たのですが、両方とも絞込みの条件にすることは出来ませんでした。出来る方法があるのでしたら教えてください。

  • 平均点以上の児童を抽出したい

    シート1のB1セルは「氏名」と入力し以下のセルには学年児童の氏名が入力されています。      B1セルの隣、C1セルには「国語24年」と入力し、以下のセルには児童の国語24年の得点を入力。同様にC1セルの隣のD1セルには「算数24年」、その隣は「国語23年」・・・・とあり最後はH1セルに算数22年となって各列に得点が入力されています。 同じくシート1の K1列からQ1列にB1~H1に入力している項目をコピーしています。そして L1~Q1の直下のセル(L2~Q2)に各年度の平均点以上の数式(例 >80など)を入力しています。 やりたいことは、B1~H1の下に入力されている児童の得点からL2~Q2の数式に該当する児童と得点を表示させたいのです。 以前に同様のことを行ったのですが、やり方をすっかりと忘れてしまい困っています。 どなたか、ご存じの方、ご教示ください。 

  • ACCESS2007で成績管理

    成績管理システムを作成したいのですが、どなたか教えてもらえませんか?Access 2007の勉強中の超初心者です。 課題:    システム概要は、下記のとおりです。    試験の種類は、各学期(3学期制)ごとに中間テスト、期末テスト、実力テストの   3種類有ります。    試験科目は、国語、算数、理科、社会です。(各科目の点数は100点満点です。)    学校は、1年~3年生まで5クラスあり、子供たちには、クラス毎に出席番号が付   けられています。    ※1クラスの人数は最大50名です。    1年を通じてデータ管理するものとします。※一人の生徒に対して複数年管理する   ことはありません。      テーブル作成について    下記のテーブルを作成     生徒MT       出席番号 名前 クラス       1101 A君 1年1組       1102 B君 1年1組       2101 C君 2年1組 2102 D君 2年1組 3101 E君  3年1組 のように1年、2年、3年それぞれ5クラス      教科名MT        教科番号  教科名         1.     国語         2.    算数         3.    理科         4.    社会 試験名MT 試験名番号  試験名 101    1学期中間テスト 102    1学期期末テスト 103    1学期実力テスト 201    2学期中間テスト 202     2学期期末テスト 203    2学期実力テスト 301    3学期中間テスト 302    3学期期末テスト 303    3学期実力テスト 作成するフォーム     1.試験結果を入力するフォーム     2.入力した結果を参照することが出来る表形式のフォーム  どのような考え方でテーブル作成、クエリ作成、リレーショナルなテーブル設計等をすればよいのか 教えてください。

  • データの分析と標準偏差

    標準偏差の問題を教えてください。 「20 人のクラスで数学のテストを行ったところ,得点の平均値はx,標準偏差は sx であった。また,出席番号が k (k = 1,2,…,20) の生徒の得点は xk であった。 ところが,採点後,問題に不備があることがわかった。ただし,不備のあった問題の 配点は 20 点であり,この問題を正解した生徒は一人もいなかったものとする。よく調べたところ, 問題不備の影響を受けたのは出席番号 1 の生徒のみだったので,出席番号 1 の生徒だけ 20 点加点することにした。出席番号 1 の生徒の,得点訂正前の得点について    x1= x^- であるとき,得点訂正後の標準偏差 sz を表すとどうなりますか?」

  •  エクセル2003でを使って志望校と得点を入れれば、志望校別順位(志望

     エクセル2003でを使って志望校と得点を入れれば、志望校別順位(志望校別得点順位一覧表)をすぐ出せるプログラムを作りたいのですが、作り方を教えてください。  私は、学年9クラスの大規模校に勤めています。現在3年で、進路担当です。年間に何度かテストを行い、その結果を基にして進路指導をするのですが、その時の資料として、志望校別順位も提供したいと考えています。350人程度ですので、切り貼りでも作れないことはないのですが、テストの回数が多いので、毎回切り貼りでは結構時間がかかり大変だと思っています。そこで、各学級担任に学級名簿に志望校と得点を入力してもらったら、自動的に志望校別順位が出るプログラムが作れたらと思っています。  いろいろ考えてみたのですが、私の乏しい知識ではできません。ちなみに生徒が志望する高校の数は毎年20校程度です。  関数については、計算式程度の知識しかありません。関数の本を買って勉強を始めましたが、間に合いそうもありません。どうか、分かる方がいましたら教えてください。使用時期が目前に迫っていますので、よろしくお願いします。

  • Accessでのクエリ作成について

    下の2つのようなテーブルからクエリを作成しています。 (1)データマスタ(テーブル) 出席番号   入力日  入力時間  国語  算数  社会 001        6/4    14:00    2     3    2 001        6/4    14:00    2     3    2 002        6/4    15:00    3     2    1 002        6/4    15:00    3     2    1 003        6/4    16:00    4     2    0 003        6/4    16:00    4     2    0 003        6/4    17:00    0     0    2 003        6/4    17:00    0     0    2 (2)クラスマスタ(テーブル) 出席番号   学年   組 001        1    2 002        1    3 003        2    1 クエリを作成して、抽出したいデータ 1)重複したデータを非表示にしたい *レコード削除はしたくない 2)〔合計〕というフィールドを作って(国語+算数+社会)の和を表示したい 3)出席番号003のように、一日に複数回データ入力している者がいるので その者のデータは一行で和を表示させたい 4)001と002は1年生なので、1年生というくくりで各教科の和を表示させたい 私が理想としている、クエリを実行した結果 出席番号   入力日  学年  組  国語  算数  社会  合計 001        6/4    1    2   2     3    2    7 002        6/4    1    3   3     2    1    6                          5     5    3    13 *1学年の和 003        6/4    2    1   4     2    2    8 私が現在作成しているクエリの実行結果 出席番号   入力日  学年  組  国語  算数  社会  合計 001        6/4    1    2   2     3    2    7 002        6/4    1    3   3     2    1    6 003        6/4    2    1   4     2    0    6 003        6/4    2    1   0     0    2    2 1)の重複データ非表示はグループ化で用件を満たしました。 2)〔合計〕というフィールドを作っての和は、クエリで演算子を使って要件を満たしました。 合計フィールドに(国語+算数+社会)と設定して。 【質問】 3)出席番号003の、一日に複数回データ入力している者を一行で表示させることが出来ません。 入力時間の違うデータが複数あるので、003が上のように複数行で表示されてしまいます。 理想のように1行で表示するにはどうしたらよいでしょうか。 4)の1年生全組の和(ここでは1年2組と3組の各教科と合計の和)を表示させるには、 どのようにしたらよいでしょうか。 以上2点、お分かりになる方がいましたらアドバイスお願いしたいと思います。

  • javaプログラムについて

    クラスの出席番号順にString型配列nameに名前が、 * int型配列scoreにテストの点数が格納されています。 * * 出席番号1 大悟 74点 * 出席番号2 琴音 70点 * 出席番号3 勇輝 88点 *       ・ *       ・ *       ・ *       ・ *       ・ * * このクラスの最高得点者の名前と、最低得点者の名前を * 表示するメソッドを作成してください。 * */ public class MethodAdd8 { public static void main(String[] args){ String[] name = {"大悟", "琴音","勇輝","葵","綾乃","和樹","凛","愛花","結愛","孝太郎"}; int[] score = {74,70,88,82,96,64,80,61,72,79}; //メソッドの呼び出し score("綾乃",1); score("愛花",2); } //ここにメソッドを追加してください public static void score(String name,int score){ if(score==1){ System.out.println("綾乃"); }else{ System.out.println("愛花"); } } } この配列から、最高得点者と最低得点者は分かるので上記のようにしたところ、 score配列の中から最高得点者と最低得点者を探すように、と言われました。 考え方やヒントなどをお願いします。

  • アクセスのグラフの目盛の設定値について

    アクセスで生徒の成績管理が目的です。 テーブルの内容は「生徒番号」「試験年月日」「英語得点」「国語得点」などです。蓄積したデータを各生徒ごとに抽出し、教科別に得点のグラフを作成しようと思っています。 各教科の得点の推移のグラフは表示できました。が、必要なデータは今年度のものだけなので、横軸に範囲を設定したいのです。 範囲を12ヶ月(今年なら2004/4から2005/3)にして表示したいのですが、グラフの画面で「2004/4から2005/3」に設定してしまうと、当然来年からのデータは表示されません。グラフの設定をVBAなどで設定することは可能でしょうか?ご存知の方がいらっしゃいましたらよろしくお願いします。

  • 小学校クラス委員の選出方法

    現在 PTA副会長をしています。PTA役員は各学年の推薦委員が選出する方法ですが、クラス委員は年度始めのクラス懇談会の前に決めています。 クラス懇談会の前には授業参観がありますが、授業参観だけ参加して、懇談会はパスするケースが 多く毎年 クラス役員を決めるのに担任の先生方が大変な思いをしているようです。 小学校の規模が小さく、児童数350名ほどで各学年2クラスづつです。 その中から 事業研修委員 2名 広報委員    1名 推薦委員   各学年1名 7名選出されますが、なかなか決まらず。 懇談会に出ているメンバーは大体決まっていて、その中で決まってしまうケースが多いようです。 年度始めのPTA総会で保護者の方から、懇談会に出席している保護者の中で決めてしまい 出ない人の逃げ徳のような気がする。 と意見があり、今年度の役員会で来年度から新しい選出方法を考えることになりました。 PTAという母体が出来た頃は母親は専業主婦の方が多い時代だったのかも知れませんが、 今 ほとんどの方が仕事を持っているのが実情です。 ご多分にもれず私も仕事をしながらの役員活動です。 仕事を休めばその分職場の他の方に 迷惑がかかりますが、職場の人たちの「お互い様だから」の言葉に甘えながら活動しています。 いろいろ ネットで探して見ましたが、良い方法を見つけ出す事が出来ません。 一つの案として学年最後の懇談会で新年度のクラス委員を決定する方法が出ています。 クラスが2クラスと小規模なので学年単位で考える事が出来る。 最初の懇談会より先生も保護者の方と顔なじみになっているのでお願いしやすい。 もちろん 新学年のクラス替えの時に片方のクラスに委員が固まってしまう事がある事も考えてはいます。 その他に 何か良い方法ありましたら、教えていただきたいと思い質問してみました。

  • なんとかならないのでしょうか・・・

    大阪府堺市某区の小学校に通う児童の保護者です。現在5年生ですが、2000年産まれで児童数が多く、低学年の時は、3クラスでしたが、3年生からは、2クラスで現在、1クラス39人です。算数などは少人数生をとってくださっていますが、他の授業は2クラスで、崩壊しています。現場の先生は頑張ってくださっているのですが・・・うわさによると次年度は、誰も担任を希望していないと聞きました。先生も30代の中堅どころはほとんどいなくて、定年まじかの先生がほとんどです。校長も保護者の顔色をうかがって当たり障りのない感じで・・・このような状況を相談できる機関はあるのでしょうか?

専門家に質問してみよう