You could also try Switch function. However, I've read that using such functions in queries can bog them down at least, or worse, evaluate all possibilities thus leading to unexpected results. You could also call a function that uses a Case block. That way, processing stops at the first true result. You are also close to the limit of nested IIF's I believe.
Switch(SOP >= 0 And SOP <= 6, "<4%", SOP >= 7 And SOP <= 8, "10%", SOP >= 9 And SOP <= 10, "15%", SOP >= 11 And SOP < 12, "20%", SOP > 12, "33%")
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.