puoi memorizzare la categoria in una variabile di comodo e poi controllare ad ogni giro che non sia cambiata, nel qual caso salti a riga nuova.
codice:
' apertura connessione e lettura recordset
miaCategoria=""
DO While Not Rs.EOF
IF rs("Categoria")<>miaCategoria THEN
' vado a riga nuova
ELSE
' stessa categoria, continuo con il mio giro
END IF
' altre cose...
miaCategoria=rs("Categoria") ' memorizzo per il prossimo giro
Rs.MoveNext
LOOP
va ovviamente adattata al tuo caso.
spero tu possa trarre beneficio da queste scarne indicazioni. nel caso non sia stato sufficientemente chiaro, non esitare a chiedere ulteriori delucidazioni.