データが昇順(降順)に並んでおり、下記の所属コードのように「百の位」がそれぞれ同じグループとした場合。
101~103
201~202
301~303
401~402
ごとに何か処理をしたい場合のアルゴリズム
201のデータを読み込んだ場合、それまでと違うグループと判断した場合、これまで同じように行っていた処理を中断する。
⇒ コントロールブレイク
そして、グループごとに小計を求めた後、5列目に出力する。(そのあと、変数totalへ総合計を出すために加算していく。)
⇒ グループトータル
ポイントは「hozon = Int(Cells(i,2))」が直下の Do While文の処理継続の条件となるところにある。
また、Do while文はFor文と異なり、無限ループのエラーに起こりやすいため、
かならず、添え字が変化するように「 i = i + 1」のような処理をする必要がある。
これがなければ i が永遠に変化しないため、同じ処理を何度もしてしまう。
Sub total()
Dim total As Integer
Dim shokei As Integer
Dim hozon As Integer
Dim i As Integer
i = 2
total = 0
Do While i <= 124
shokei = 0
hozon = Int(Cells(i, 2) / 100)
Do While i <= 124 And hozon = Int(Cells(i, 2) / 100)
shokei = shokei + Cells(i, 4)
i = i + 1
Loop
Cells(i - 1, 5) = shokei
total = total + shokei
Loop
Cells(125, 5) = total
End Sub