Because you've grouped by company, then county, Access is going to list the detail records in that order. If you're just trying to get the companies to list in order of their sums, you'd be better off calculating those sums before you assign the recordsource of the report.
By that, I mean that you should either run a query to get these sums totally outside the report or via code in the Report_Open section. Then use the results of that query for the source of the report, rather than the original data set. since you'll already have the totals. you'll be able to specify that sum field in sort/grouping.
Although it probably doesn't apply for what you're doing now, you can specify calculated fields in the Sort/Grouping box. You just need to put an = before the calculation and the [] where needed. If Access can't determine the order of that calculation on a per record basis it will either give an error or you'll get a weird result. (Try it anyhow, you know you want to.)
---
You can either create it directly in ADO, or using Access you can create a table for this data. If you use a table, be certain to delete any records which may exist from your previous use of the table.
Store the $ amounts, along with any other fields you need, in each record of the table, as you read them in from the report. So, in your example, you would probably have 2 fields in the table: 1 field for the sum amount and 1 field for the company name associated with the sum.
After you've read in all the records, sort the table using the sums column. Then loop through the records in the table and print them out.