If you're grouping on a range of values, then presumably you will have a group for each possible value in the group, or you are NOT interested in the group, and you should use the record selection formula (Report->Edit Selection Formula->Record) to eliminate these rows from the report.
One of the keys is to ensure that the SQL is passed to the database as a result (check Database->Show SQL Query) so that Crystal doesn't do the work.
So a formula like this for grouping:
if {@TexttoNumber} < 50000000 then "Less than Expense"
else
if {@TexttoNumber} in 50000000 to 89999999 then "Expense"
else
if {@TexttoNumber} > 89999999 then "Over the Expense"
Will construct a group for every possible combination.
If you do not want values other than 50000000 to 89999999 in the report, then add the following to the record selection formula:
{@TexttoNumber} < 50000000
or
{@TexttoNumber} > 89999999
Keep in mind that if you use variables in the formula Crystal will NOT pass SQL to the database.
Hope this helps.
-k