(●`ε´●):成績一覧表を作る(8)で下のコードにバグがあったと騒いでいたな?
%受験者数=0
For %i = 8 To 52
If Cells(%i, 4) <> "" Then
%受験者数 = %受験者数 + 1
End If
Next
【´・ω・`】:うん、ちょっと不注意だった。
(●`ε´●):おまえが不注意なのは今に始まったことでないので別に驚きは
しないが、俺にはどういう不具合があるのか今ひとつわからんので
ちょっと解説してくれないか?
【´・ω・`】:OK。上のコードは得点入力欄(D8からD52)に入力された得点の数が
いくつあるか、数えているんだ。
(●`ε´●):受験すれば普通、100点満点なら0点から100点までの何らかの
点が入力されるはずだから、得点の数イコール受験者の数という
発想だな。
【´・ω・`】:そう。それでうまくいくと思っていた。ところが三四郎は0と""の
区別がつかないんだ。0点を三四郎は""だと判断してしまうんだ。
(●`ε´●):すると・・・例えば40人受験したとして、その中に0点を取った者が
受験者数が39人になってしまうというわけか?
【´・ω・`】:そうなんだ。
(●`ε´●):それじゃあ、実際より平均点も高くなってしまうな。
【´・ω・`】:その通りなんだよ。で、それを回避したのが下のコードだ。
%受験者数=0
For %i = 8 To 52
If Not IsBlank(Cells(%i, 4)) Then
%受験者数 = %受験者数 + 1
End If
Next
受験者数を求めるコードは何通りか、考えられるが
これはそのうちの一つだ。
コメント