第12講 配列
第1話 3次元配列


まず、次のエクセルシートをクリックして開いてください。
エクセル問題シート
このシートは、2番目以降のシートに
1学期中間テスト、1学期期末テスト、2学期中間テスト、
2学期期末テスト、学期末テスト
の結果が入力されています。
(RAND()つまり乱数を作って、データが作成してありますので
データは、全くデタラメです。例えば、出席番号23番の生徒の
社会のそれぞれのテストの点数は、
0点、89点、44点、19点、66点となっていて現実性がありませんが、
あくまで模擬データですので、気にしないでください。)

今回は、3次元配列を使って、
5回のテストの総合成績を出してみたいと思います。
5回の国語の平均、社会の平均などを求めます。
5回分のデータを収納する配列は3次元でなければならないことは、
おわかりかと思います。
(出席番号、教科名、テスト種類)
のデータ構造を持っているからです。
尚、テスト種類は第1学期中間テストなどを指しています。
また、データ構造の順番は全く任意で、例えば
(テスト種類、出席番号、教科名)
とすることもできます。
要するに何をx要素、y要素、z要素とするかは、
まったく自由なわけです。
データ構造は読者に任せますが、
ここでは、(テスト種類、出席番号、教科名)のデータ構造で話を進めます。

最初の課題は、
3次元配列を用意して、
そこにシートのデータを代入することです。
まず、配列
Dim data(5, 40, 5) As Integer
Dim syori(40, 5) As Integer
を用意しましょう。
グローバルにする理由は、
代入操作、各教科の5回の平均、1学期データ処理などを
メインプロシージャでは行わず、
それぞれSubプロシージャに処理させるようにしたいからです。
構造化プログラミングでは、
なるべく部品は小さくした方がいいからです。

尚、用意する3次元配列は
Dim data(4, 39, 4) As Integer
でも本当はかまいません。
なぜなら、配列の添え字は0から始まるので、
実際にはx要素5個、y要素40個、z要素5個あってこれで十分だからです。

ですが、基礎講座ではわかりやすさを優先して
Dim data(5, 40, 5) As Integer
Dim syori(40, 5) As Integer
とします。応用講座では、添え字0も使うことにしますが。

では皆さん、5回の平均を計算し、
それをシート学年総合に表示させるプログラムをご自分で組んでみてください。
もし、作成できたら解答例を参考にしてください。

問題解答例1

さらに、1学期中間・1学期期末・2学期中間・2学期期末・学期末テスト・学年総合
の合計や平均なども出せるように改良しましょう。

第2話へ