VBAでグループごとに集計するプログラムの組み方

あるフィールドのグループが変わるごとに、そのグループの演算を行い、結果をレコードセットに書き出します。

まず、集計する順番にレコードを並べます。それは、並び順を指定したクエリで作成。もちろん、SQLでもok.

次にそのクエリからレコードセットをセットします。

まず、1レコード目の値を変数に代入

前のレコードと異なるグループ名だったら、演算結果を書き出します。

同じグループ名だったら演算します。そして次のレコードを読み込みます。

Private Sub ()

Dim Db As DAO.Database
Dim rst1 As DAO.Recordset
Dim gr As Single

Set Db = CurrentDb()

Set rst1 = Db.OpenRecordset("Query", dbOpenDynaset)
Set rst2 = Db.OpenRecordset("table", dbOpenDynaset)

If rst1.BOF = False Then

    rst1.MoveFirst

End If

rst2.AddNew
gr = rst1!field

Do Until rst1.EOF

If gr <> rst1!field Then

rst2.AddNew
rst2!gr = gr
rst2.Update
gr = rst1!gr

rst1.MoveNext

Else
rst2.AddNew

rst1.MoveNext

End If

Loop

Set rst1 = Nothing
Set rst2 = Nothing
Set Db = Nothing

End Sub

タイトルとURLをコピーしました