28日目 赤点と成績優秀者【30日間1日1本マクロ生活】

30日間1日1本マクロ生活、28日目です。

マクロを書く準備は、0日目に記事を書きました。

成績処理

学校の教員をしているので、テストの成績処理は必ずやる仕事の一つです。

連番氏名得点
1大木菜々実81
2久米美穂83
3高嶋友吉85
4横田愛香35
5鳥居昌73
6菅谷奈々子97
7今西羽菜79
8野村龍也14
9沢井文康8
10細田創9
11柳川紗羽71
12岩井正広77
13浅見末治97
14大平音々3
15高田歌音79
16須藤真治77
17堀江喜代志2
18堀井貞夫2
19尾形安奈28
20影山夕菜27
21田尻麗香47
22武藤珠希38
23末永武信72
24棚橋未来66
25石崎奈月14
26相田永二79
27森脇昌子81
28布施咲子18
29上杉颯太77
30小寺正利25
31玉城剣一30
32村上広司33
33熊谷鈴54
34沢井千紗30
35大城莉歩85
36柳田千紗6
37青山辰二68
38萩原時男72
39平山昭吉10
40天野亜美50
41沖与四郎6
42吉川賢二84
43猪俣常男54
44有馬優斗88
45石田紗矢32
46長島勇吉73
47尾崎里穂56
48辻本健志48
49土橋若葉74
50勝又瞳59

残念ながら点数が取れなかった場合、赤点となります。

40点未満の場合は赤点で、文字通り得点を赤く装飾します。

85点以上の場合は成績優秀者として褒め称えるため、別の表に抽出します。

とりあえずコードを


Sub shori()
    y = 2
    yushu = 2
    
    Do While Cells(y, 1) <> ""
        p = Cells(y, 3)
        nam = Cells(y, 2)
        
        If p < 40 Then
            Cells(y, 3).Font.ColorIndex = 3
        End If
        If p >= 85 Then
            Cells(yushu, 6) = nam
            Cells(yushu, 7) = p
            yushu = yushu + 1
        End If
        y = y + 1
    Loop
End Sub

これも難しいことはしていません。

データの見出しを除く2行目からスタートし、連番がなくなるまでループ。

得点が40未満なら赤く装飾。

85以上なら名前と得点を別の表に。

その都度、別表のy座標を1つずつ増やしています。

実行結果

これが

こうなります。

完璧ですな。

Excelは便利

悔しいですが、Excelは便利です。

Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。

マクロを書くようになると、Excelからは離れられないですね。

30日間、残り2日です。頑張ります。

雑感

Posted by Hirota