第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)は、
1学期
2学期
3学期
対応データが47飛びであるからです。

では、次にグローバル3次元配列を冒頭で宣言して、それを利用して年間処理をする方法を考えましょう。
今回も、コードはなるべく活かすということを条件とします。


第4話へ 第6話へ

004
  


VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る