• ベストアンサー

VBAで平均点と偏差値を求めたい

はじめて質問させていただきます。 課題1:国語、数学、理科、社会の50人分の点数が掲載してあります。このデータを用いて次の処理をするプロシージャを完成させなさい。国語、数学、理科、社会の50人分のデータの平均点、偏差値を画面上に表示する。 課題2:出席番号が変化するデータに対して、国語、数学、理科、社会の平均点、偏差値を画面上に表示する。 ちなみにデータは b2に出席番号 c2に国語 d2に数学 e2理科 f2社会と入力されてます。 次にb3~b52にNo.1~No.50の出席番号 c3~c52に国語の点数 d3~d52に数学の点数 e3~e52に理科の点数 f3 ~f52に社会の点数が入力されています。 点数は問題に関係ないと思うのでここでは書きません。 また、表示にはメッセージボックスを使うようです。 この2つの問題のプロシージャを教えていただきたいです。 できれば、プロシージャ1行ごとに簡単な解説も付けてもらえたら嬉しいです。 ちなみに課題1はここまで出来たんですが、課題2はまったくわかりません(汗 Sub 国語平均() Dim 平均 As Single Dim 偏差値 As Single Dim 標準偏差 As Single Dim 数量 As Integer 和 = Application.WorksheetFunction.Sum(Range("c3:c52")) 数量 = 0 Range("b3").Select Do Until ActiveCell.Offset(0, 1).Value = "" 数量 = 数量 + 1 ActiveCell.Offset(1, 0).Select Loop 平均 = 和 / 数量 標準偏差 = Application.WorksheetFunction.StDev(Range("c3:c52")) MsgBox 平均 MsgBox 偏差値 End Sub お手数をおかけしますがどうかよろしくお願いします。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

同じ理由で、ヒントのみ 課題でいっている「偏差値」は「標準偏差」のことなのか、いわゆる「偏差値」のことなのか不明ですが、まともに解釈すると偏差値なので・・・   偏差値=(得点-平均点)/標準偏差×10+50 となります。偏差値は個々の点数に対応して出ますので、50個の偏差値が求められことになるので、MsgBoxだとつらそうです。 (1)指定された範囲で(n人分にすればもっと一般的)平均値、標準偏差、各偏差値をもとめるサブルーチンを作る。(質問文のものを、すこし工夫して完成させればよい。)  計算結果は(例えば)60行に平均値、61行に標準偏差、63行から順に偏差値記入してゆく。 (2)上記のサブルーチンを各教科で呼び出す。(計算対象をC列、D列、E列、F列として4回呼び出す。) (3)このままだと結果が読みにくいので、出席番号をb列を63行~にコピーし、タイトルを59行にいれ、B61、B62に「平均値」「標準偏差」など書き込むルーチンを付け加える。 課題1と課題2の違いがよくわからないけれど、これで両方の回答になりませんか?

その他の回答 (1)

  • pu--n
  • ベストアンサー率56% (32/57)
回答No.1

こんにちわ。 初めまして  なんですが・・ 微妙なところです。何が微妙かというと、課題(問題)の「丸投げ」行為に該当してしまいそうな・・。 それはさておいて、解決のヒントを回答しようとしても、 ”課題2:出席番号が変化するデータに対して” の意味がわかりません。出席番号がどのような時に、どのように変化し、メッセージ表示処理を行うタイミングはいつなのか。 もうちょっと情報が欲しいところです。

you35gtr
質問者

補足

データの変化というのは出席番号を1から2へ変えたりということだと思います。 個人の4教科の合計の平均点と偏差値を出すということだと思います。 そこははっきりとは説明されてないのですがたぶん授業でやったのはこういうことだったので・・・ 自分でも一応努力して考えたんですが・・・やはり丸投げですかね;;