Well, this time the format works fine so that's a step forward.
The problem you have goes beyond 'just' needing to normalize your table data. Although you definitely do need to do that. [And as proof of concept of what I was talking about, check out the spelling of the Chemical Name for HazardousComponentID's 75 and 111, or 472 and 372 or 186 and 86. Life in the denormalized world is a pain in the rear!

]
But the actual issue you absolutely must fix to accomplish your goal is that your % Weight field contains mixed data types and even multiple values. For ranking purposes, this field should be strictly a numeric field with only one value in it, or a text field also with only one value in it and strict rules about how that text value can be enetered that will allow for a meaningful sort.
Try sorting the following 'values' in an excel spreadsheet and see what happens:
01
1
<5
10-20
N/S
0 - 100
0.5 Max
<5%
Balance
14
014
160.
75-85
You can sort these 'values' but all you will get is going to be strictly alphabetical order, not increasing quantity.
I know you want a quick and dirty 'fix' but I'm not going to be able to oblige given this type of data corruption issue. A db is not a spreadhsheet, if the data you want to enter does not fit the box, then chances are that you have not designed the db correctly. Fix the box (or make more boxes) to accept all the data you wish to enter.
For example, you might consider that instead of your % Weight field you might need four or more fields and a separate table since you have potentially, multiple values per chemical component (in your current schema):
tblWeightObservations
-WeightObservationID (pk,auto)
-HazardousComponentID (FK)
-WeightType (Low-Range/Minimum, Average, Hi-Range/Maximum) (probably should store an fk integer linked to a WeightTypes lookup table)
-WeightValue (Numeric only)
-WeightValueQualifier (less-than, equals, greater-than) (probably should store an fk integer linked to a WeightValueQualifiers lookup table)
And then you need to structure a query to return only one of those values for each hazardouscomponentID. How you do that is likely to involve something like a switch function, or an iif function. This derived field is then going to be used as the basis of your ranking query. You'll also need to explictly handle greater thans and less thans since these exist in your data.
I really think you need to bite the bullet and normalize/fix the database structure or else accept your ranking goal issue is just one of the unhappy things you're going to have to live with.
You could also go through the data and edit it to provide a single numerical number manually, then convert the field to a suitable numerical type, then we could discuss how to proceed from there.
The only other thing I can think of is to write a vba module that will take the text string and parse it to provide a single numerical value for sorting. That's a task that I wouldn't try myself since the logic is bound to be tortuous at best and you need some kind of control over what the user input will look like for that approach to be successful.
Sorry I can't offer you better news than that.