第13講 3次元ループと3次元配列による成績一覧表の高度化
第5話 セルのデータ利用による年間処理
解答例
Private Sub CommandButton10_Click()
ds '年間平均をシートに表示させる
f41 '生徒の合計点・平均点の計算
f42 '各教科等の合計点・平均点の計算
f43 '各生徒の合否判定
f44 '各生徒の講評
f45 '各生徒の最高点の算出
f46 '各生徒の最低点の算
f47 '各教科と合計・平均の最高点の算出
f48 '各教科と合計・平均の最低点の算出
Cells(162, 1).Select
End Sub
Sub ds()
Dim i As Byte, j As Byte, k As Byte, w As Integer
For i = 1 To 40
For j = 1 To 5
w = 0
For k = 1 To 3
w = w + Cells(6 + i + 47 * (k - 1), 1 + j)
Next
Cells(147 + i, 1 + j) = w / 3
Next
Next
End Sub
・
・
(以下のコードは同じ。)
シートのセルの設定
B148からJ191までドラッグで範囲指定→右クリック→セルの表示形式→表示形式→
としてOKをします。
参考ファイル成績一覧表マクロ完成版1
解説
dsが3次元ループとなっています。
縦(出席番号)、横(教科)に加えて学期があるからです。
For i = 1 To 40
For j = 1 To 5
w = 0
For k = 1 To 3
w = w + Cells(6 + i + 47 * (k - 1), 1 + j)
Next
Cells(147 + i, 1 + j) = w / 3
Next
Next
のiは出席番号、jは教科番号(1:国語、2:社会、3:数学、4:理科、5:英語)、kは学期数に対応しています。
+ 47 * (k - 1)は、
対応データが47飛びであるからです。
では、次にグローバル3次元配列を冒頭で宣言して、それを利用して年間処理をする方法を考えましょう。
今回も、コードはなるべく活かすということを条件とします。
第4話へ 第6話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る