• ベストアンサー

<未解決>Excel(エクセル)でテストの結果をマクロで個人票にしたいんですが…

エクセルのマクロを使って、下記のように個人票を作りたいです。いろいろ参考になりそうな同類の質問もあるのですが、私は初心者で、自分のして欲しいものと微妙に違うので書き換えられないので質問しました。詳細を書きます。分かりやすいように学校のテスト風に書きます。 <元の物> │1学期中間テスト│ │氏名│国語│英語│数学│日史│・・・│合計│平均│国順│英順│数順│日順│・・・│総合│ │人A│70│80│90│85│・・・│800 │88.9│3  │5  │ 2 │ 3│・・・│1 │ │人B│60│70│80│75│・・・│790 │87.9│5 │7  │ 4 │ 4│・・・│2 │ │・ │・ │・ │平均│55│60│70│64│・・・│515│578.2│ <マクロ使用後> │1学期中間テスト│空白セル×2│人A│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│70│80│90│85│・・・│800 │88.9│ │順位│3  │5  │ 2 │ 3│・・・│1 │ │平均│55│60│70│64│・・・│515 │57.2│ │ │1学期中間テスト│空白セル×2│人B│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│60│70│80│75│・・・│790 │87.9│ │順位│5 │7  │ 4 │ 4│・・・│2 │ │平均│55│60│70│64│・・・│515│578.2│ ━以上━ (1)テスト名、科目名、人名等は毎回変わるのでそれに対応できるように。 (2)また、科目数、人数も変わるのでそれにも対応できるように。 (3)最初に、│テスト名│を入れ、2つ空白セルを作り、│名前│を入れる。 (4)次の行にセルを1つあけて、順に科目名、合計、平均 (5)次に「点数」といれて、その後に各人の点数 (6)次に「順位」といれて、その後に各人の順位 (7)最後に「平均」といれて、科目ごとの全体の平均 (8)人と人の間に空白の行1行 それぞれの合計、平均、科目ごとと総合の順位と科目ごとの平均はすでに算出されているものとしてつくっていただければ結構ですが、もしできれば、それも作ってくれるマクロだとなおさら嬉しいです。ちなみに│ │と「 」の違いは、前のセルを引用してくるか、その文字を新しく挿入するかの違いです。技術的に可能か不可能かも私にはわからないので、もし不可能ならばそのように教えてください。 お忙しいとは思いますが、よろしくお願いします。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

#2です。見直したところ式に誤りがありましたので、照れ隠しに追加情報です。 <Sheet1> |A||B|C|D|E|F|G|H|I|J|K 1||一学期中間テスト 2|氏名|国語|英語|数学|日史|合計|平均|国順|英順|数順|日順|総合 3|人A|70|80|90|85|325|81.25|3|5|2|3|1 4|人B|60|70|80|75|285|71.25|5|7|4|4|2 動的名前定義 Sheet1!はExcelが勝手につけるので省略可 項目、人数が変わっても名前の範囲が自動で変更されます 名前「一覧表」=OFFSET(Sheet1!$A$2,1,1,COUNTA(Sheet1!$A:$A)-2,COUNTA(Sheet1!$2:$2)-1) 名前「列見出し」=OFFSET(Sheet1!$A$2,0,1,1,COUNTA(Sheet1!$2:$2)-1) 名前「行見出し」=OFFSET(Sheet1!$A$2,1,0,COUNTA(Sheet1!$A:$A)-2,1) 注A列、2行目には余分な情報を加えないこと(項目数を誤認識してしまう) http://office.microsoft.com/ja-jp/excel/HA011261151041.aspx <Sheet2> A||B|C|D|E|F|G|H|I|J|K 1|一学期中間テスト|||人A|1|| 2||国語|英語|数学|日史|合計|平均 3|点数|70 4|順位|3 5|平均| B3の式=INDEX(一覧表,$E$1,MATCH("国語",列見出し,0)) D1の式=INDEX(行見出し,E1,1) <マクロの例> Sub test() Dim i As Long For i = 1 To Sheets("Sheet1").Range("行見出し").Rows.Count Sheets("Sheet2").Range("E1").Value = i 'ここに印刷するなり、他のシートに値複写するなり、処理を記述 '処理 Next i End Sub

pic85755
質問者

お礼

返事遅くなってすみません。 なるほど、これならできそうですね! 参考にさせていただきました。ありがとうございました。 やはり、自分でマクロを作成・修正できないのは難があるので、 ワードの差込印刷も含めてもう一度参考にさせていただきます。

その他の回答 (5)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.6

[回答番号:No.4] の DOUGLAS_ です。 >参考にさせていただきましたが、どこかおかしいのか、きちんと表示されませんでした。  何が「きちんと表示され」なかったのでしょうか?  もし、<元の物> のシート名が「Sheet1」でないような場合でしたら、[回答番号:No.4] と同様に、[回答番号:No.3] の操作をすべて行なった後で、[置換ダイアログ] を開き、[検索する文字列(N)] を Sheet1 に、[置換後の文字列(E)] を <元の物>のシート名 にして、[すべて置換(A)] してください。  あるいは、[回答番号:No.3] の冒頭に >Sheet1 A1 に「1学期中間テスト」、A2 に「氏名」とします。 と書いてありますが、「1学期中間テスト」・「氏名」が、それぞれ<元の物>のシート の A1・A2 ではなかった場合は、さっぱりです!!  また、 >Sheet2 において、 と書いておりますように、[回答番号:No.3] の計算式は、<元の物>のシートとは別のシートの A1: などの書いてある通りのセルにコピペしてくださいね。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

[回答番号:No.3] の DOUGLAS_ です。  ちょっと間違いがありました。  [回答番号:No.3] の操作をすべて行なった後で、[置換ダイアログ] を開き、[検索する文字列(N)] を $A$1:$A$14 に、[置換後の文字列(E)] を $A:$A にして、[すべて置換(A)] してください。 >この私の回答に対してのご質問にはお答えいたしかねます とは書いたものの、他にも間違いがあるかも知れませんので、不具合等についてのみお受けいたします。  <(_ _)>

pic85755
質問者

お礼

回答ありがとうございます。 参考にさせていただきましたが、どこかおかしいのか、きちんと表示されませんでした。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

 Sheet1 A1 に「1学期中間テスト」、A2 に「氏名」とします。  Sheet2 において、 A1: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,Sheet1!$A$1,"") D1: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,INDIRECT("Sheet1!A" & INT(ROW()/6)+3),"") A3: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,"点数","") A4: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,"順位","") A5: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,"平均","") B2: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,IF(COLUMN()<=MATCH("平均",Sheet1!$2:$2,0),Sheet1!B$2,""),"") B3: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,IF(COLUMN()<=MATCH("平均",Sheet1!$2:$2,0),OFFSET(Sheet1!$A$1,INT(ROW()/6)+2,COLUMN()-1),""),"") B4: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,IF(COLUMN()<=MATCH("平均",Sheet1!$2:$2,0),OFFSET(Sheet1!$A$1,INT(ROW()/6)+2,MATCH("平均",Sheet1!$2:$2,0)+COLUMN()-2),""),"") B5: =IF(MATCH("平均",Sheet1!$A$1:$A$14,0)>INT(ROW()/6)+3,IF(COLUMN()<=MATCH("平均",Sheet1!$2:$2,0),OFFSET(Sheet1!B$1,MATCH("平均",Sheet1!$A$1:$A$14,0)-1,),""),"")  B2:B5 を右方向に適当にコピー(20列ぐらい?)  1:6 を下方向に適当にコピー(人数分以上) >私は初心者で、自分のして欲しいものと微妙に違うので書き換えられないので質問しました。 とのことですが、この私の回答に対してのご質問にはお答えいたしかねますので、不明な点がございましたら、誠に恐縮ながら、ご自分でお考えください。  エクセルで普通に使う関数しか使用しておりませんので、ヘルプなりWEB検索なりで解説をお求めください。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

親切な方がコードを書いてくれるかもしれませんが、メンテナンスはどうするんでしょうね... 初心の内は、エクセルの機能をなるべく生かし、マクロは簡単なものにするのが吉だと思います。 |A||B|C|D|E|F|G|H|I|J|K 1||一学期中間テスト 2|氏名|国語|英語|数学|日史|合計|平均|国順|英順|数順|日順|総合 3|人A|70|80|90|85|325|81.25|3|5|2|3|1 4|人B|60|70|80|75|285|71.25|5|7|4|4|2 というデータがあったとして、 =INDEX(A2:L4,MATCH("人A",A2:A4,0),MATCH("英語",B2:L2,0)) は70を与えます。必要な情報について同様に繰り返せば、個人票が出来ます。検索範囲を元表の拡大・縮小に応じて動的に変化させる事も可能です。 "人A"をセルから与える様に変更して、マクロでその値を名簿から参照してくる様なループを組めば、全生徒に対して処理できます。これならマクロも至極簡単です。 ご参考まで。

pic85755
質問者

お礼

回答ありがとうございます。 なるほどそのような方法もあるのですね。 参考にさせていただきます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>│氏名│国語│英語│数学│日史│・・・│合計│平均│国順│英順│数順│日順│・・・│総合│ この”・・・”ってデータ列数はどの位を意味しているのでしょう? どこにデータがあって、どこにどのように表示(振り分け?)したいのか 回答者側で判断し提示すれば、あとは修正してもらえるのかな?とちょっと疑問でした。 回答ではなくすいません。

pic85755
質問者

補足

ご回答ありがとうございます。 おそらく科目としては5~10列ほどになると思います。

関連するQ&A

  • テスト結果が悪すぎて.........。

    期末帰ってきたんですけど、ここに載せるのも嫌なくらい悪かったです。(期末の平均点は分かってないんですけど) 中間の点数(中間の平均点)→期末の点数 国語 83(76)→60くらい 数学 78(81)→89((これだけだったらいいのに(´TωT`) 地理 45←50点中(39)→39 歴史 33←50点中(37)→27 理科1 86(78)→68 理科2 53(45)→65 英語 78(80)→45←この時体調悪かったからということを終わった直後に話しているからおこられはしないけど 家庭科 58(74)→38(ガチでヤバい) もう悲惨な結果ですよね。中間の時の点数でも怒られたのにヤバいし、私立行ってる人とは思えない点数。 正直には見せるんですけど、どういう順番で見せたらまだ怒られるのがマシになりますか?(こんなこと考えてて情けない。) 次からは、ほんとに頑張ると言うのをどう伝えたら、分かって貰えそうですか?

  • 私のテスト結果は通知表5ですか?4ですか?

    中1期末テストがかえってきたのですが…… 社会の二学期中間テストは クラス平均58で みんなが難しかったよね!の騒ぎになり うちのクラスには 100点なし 90点台なし 80点台2人 と言われた中で かえってきた点数は 82点でした。 前日の期末テストは なんか簡単かも……と思っていたら 平均70点で 私は97点でした。 一学期に先生が テストは中間期末の合計が180以上あれば5 と教えてくれました ノートと白地図ワークの提出はA A よくがんばってます のコメントがついていました。 授業態度は自分から はい!はい!と発表する積極性はあまりないけれど 一学期の成績には意欲 関心のところはA がついていました。二学期も 同じように授業をうけています。 80点台だったもう一人の男子は87と今回95点だったから 多分5だね って言ったら お前も5じゃね?と言われました 中間82 期末97じゃ180点いかないよ って言ったら でも中間はクラスで2番 学年で5番だったろ? って話になり 友達の間で 私の社会の評価が何になるか 論議になりました。 一学期の成績は5だったので 4に落ちたーと 相談したからなんですけどね 親には点数足りなかったから4になったかもと話ました がんばってたの知ってるから充分!と言ってくれたけど テスト勉強中は お手伝いもしなくていいよ って 言ってくれたのに なんかごめんなさいの気持ちです 絶対評価 相対評価を調べましたが 都合のいい 2つのいいところどり評価ならいいのにな思いました。

  • エクセルVBA マクロのプログラムがわかりません教えてください

    VBAのマクロのプログラムの問題ですがこの条件のプログラムを教えてください!おねがいします 問題:インプットボックス関数を使って国語、数学、英語の点数を入力し合計点によって以下が表示されるようにしなさい。マクロ名はtestで変数名は各自で設定しなさい 3教科の合計 メッセージボックス   300点   →    A 299点~270点 →  B 269点~240点 →  C  239点以下  →    D

  • 最近の勉強方法

    テスト勉強しているにもかかわらず、テストの点が取れません 2週間前になったらテスト勉強はすべて注いでいるのに、 他の人より勉強しているのに テストの点数と順位があがりません。さがっています。 正直テスト勉強の仕方がよくわからなくなってしまいました。 2年の1学期の期末は学年順位10位以内にはいって480点くらいだったのに 2年の中間からは数学で下がり 期末も数学と国語を中心に全体的に下がり さらに3学期末では大幅に点数が下がりました・・・・・。 (数学はあがったが社会・理科・国語で・・・) 3年生の中間で90点以上は国語だけで 他は80点台でしたが・・・・・・ 期末で大失敗してしまいました。 90点以上がないのです。 数学で60点台。英語・国語で70点台。他が80点台。 とうとう400点を切ってしまったのです。 勉強を頑張れば頑張るほど自分の点数が下がる・・・ 他の人は成績が上がり始めているにもかかわらず こんなに頑張っているのに、なぜ自分の自己ベストが尽くせないのかよくわからないです。 高校受験が近づいてくるたび焦りを感じてしまうのです。 あせらないようにする。と考えてもあせってしまうのです どうすれば定期テストに集中して取り組めますか? このままでは3年の通知表がやばいです せめて43くらいはいきたいです・・・・。 ちなみに2週間で合計40時間以上は勉強しています。 ですがこのままだととてもですけどいけません。。 助けてください。お願いします。

  • テスト結果…留年?(長文になります)

     自分は公立高校の一年で、この間期末テストが終わりました。  中間テストは散々な結果で、クラス最下位(死)  「このままだと」と、担任からもかなり厳しく注意されて、期末は勉強して、まあまあの結果をとることができました。  ですが、問題は数学です。  数学は中間で200点中99点を取り、クラスで下から二番目、しかも期末ではそれが更に悪化し、200点中30点をとってダントツでクラス最下位となってしまいました。  見ていただいたとおり、この一学期、数学はかなり悲惨な結果でした…。  二学期からは必死に頑張ってきっともっといい点数を、と思っていますが、「まさかこの点数のせいで留年するんじゃ…」という思いがめぐって、まったく勉強に集中できません。  この感じだと自分は留年してしまうんでしょうか?  今のところは学校一度も休んでなくて、いじめとかもないので出席日数が足りないから、ってことはたぶんないと思います。  学校によって留年の条件が違うようですので、念のため生徒手帳からの引用を載せさせていただきます。  原級留置  次の各号に該当する場合は、原級留置とする。  (1)不認定科目等の単位数の累計が11単位以上ある場合。  (2)不覆修科目が1科目でもある場合。  (3)総合的な学習の時間が不覆修である場合。  (4)特別活動の成果が満足でない場合。  よろしくお願いします。

  • 点数が・・

    今年中2になった者ですが順番がどうしてもあがりません。中間テストでは150人中27位で期末が25位と順位が上がりません。英語・社会は良いのですが、国語・理科・数学がよくありません。特に数学が点数が悪いです。どうしたら順位を上げれるでしょうか。

  • EXCEL マクロ

    エクセルマクロ初心者です。 エクセル2007で、複数選択したセルの合計値・平均値をコピーできないか悩んでいます。作業によって、選択するセルが変わりますので、セル番地の指定をせずにマクロの書くことができますでしょうか。 イメージとしては、複数のセルを選択をしたときに、ステータスバーにオートカルクで表示される合計値・平均値をクリップボードにコピーし、別のセルに結果をペーストする感じ(ペーストする際に合計値・平均値のどちらを貼り付けるか選択できれば尚、良)です。 個人用マクロブックに登録して、不特定ブックで使用したいマクロです。よい方法があれば教えて下さい。

  • エクセルで個人成績グラフをつくりたい

    教科ごとに、1学期中間・期末・2学期・・・・というように素点があります。 素点だけのグラフでは、レベルがわからないので、その時の平均値を表示させ、ついでにクラス内順位もわかるようにしたいのです。 つまり、その生徒の国語の成績の推移はどうか、数学は?5教科では?というように視覚化させようと思っているのです。 どういう表を作ったらよいのか試行錯誤しているのですが、うまくいきません。 シート1に成績一覧を作り、シート2にLOOKUPで個人ごとの成績を表に表示させて、その下部にその生徒のグラフを表示させようとしてたいるのですが、まずその表の設計が悪いのかもしれません。表の設計からアドバイスいただけたらうれしいです。よろしくお願いします。

  • テストで落ち込むのは結果が悪いと分かってからにしたいんですが

    私はテストの後、気になった問題の答えを調べてみて、間違っているとまだ点数が悪かったと決まったわけでもないのに気になって落ち込んでしまいます。 1~2箇所違ったぐらいで気にならず、落ち込むのは結果が悪かったと決まってからにするにはどうしたらいいでしょうか? テストなんですが、国語などではない科目の「この単語の意味を書きなさい」「○○について自分の意見を書きなさい」などの問題で漢字が間違っていたりするとその問題全部バツにする先生はどのくらいいるでしょうか?

  • 国語がやばい…

    今日国語の期末テストが帰って来たんですが、72点でした。普通の点に見えるんですが、平均はなんと69.8!平均よりわずかに高いぐらいでした。順位は40人中15位(泣)今回の点数だと、恐らく6か5といった評価がつくでしょうが、一応夏の課題テストは87点でクラスで3位、中間テストは94点でクラス1位でした。先生はこの3つのテストの合計で成績を付けると言っていたので、恐らくは8はくれるんじゃないかなと思っています。皆さんの意見を気軽に教えてください。おねがいします!

専門家に質問してみよう