Ciao,
con il TOP prendi il primo record del recordset, come hai visto.
Per ottenere quello che vuoi tu devi scorrerti il recordset e alla 'rottura' del gruppo estrai il record.
Ti scrivi due righe volanti di codice per farti capire il concetto:
Dim VecchioGruppo As String
..
'Filtri il db
....
Do While Not RecordSet.Eof
If Recordset("Gruppo")=VecchioGruppo Then
'Ha rotto
msgbox Recordset("Gruppo")
End If
VecchioGruppo=Recordset("Gruppo")
Recordset.MoveNext
Loop
.
.