resistance range to voltage range with single op-amp
Yes. However accurate an equation like $$V_o = V_{dd} \frac{(R_4 R_6 - R_5 R_6 + R_4 R_5)R_s-R_4 R_5 R_6}{(R_4 R_6 - R_5 R_6 + R_p R_5)R_s-R_4 R_p R_6}$$ is, it doesn't really give you a feeling for what's going on.

So let's look at the circuit, and try to get a feel for it.

R4 is big, very big. So let's ignore it to start with, replace it with an open circuit.

With R4 out of the way, and our input voltage coming from the \$R_s\$ - R2 junction (let's call that voltage and that node \$V_s\$) U1 is configured as a non-inverting amplifier, with gain controlled by R5 and R6||R1. If you want a bigger output voltage swing, increase R5, and vice versa.

R2 is quite big, it acts a bit like a current source to \$R_s\$. As \$R_s\$ increases, \$V_s\$ increases, decreasing the voltage across R2, so decreasing the current flowing through it. This would create an R to voltage non-linearity. If only there was a way of getting an increased current from somewhere to counter this happening. Wait, the op-amp voltage increases, a lot, as \$V_s\$ increases, so a small current flowing back from the output to \$V_s\$, through a big resistor, will do the trick.

What value should R4 have? If I change R4, then \$V_s\$ will change, and the output will change, so we need a closed form solution for it? Not necessarily, the effect on \$V_s\$ is small. Compute the current in R2 for two different \$R_s\$ values, and pick an R4 to keep the R2 current constant. Now recalculate with the new values. It will converge in a few steps.

R1, what's that doing? With R6, it's setting the voltage about which the U1 non-inverting amplifier is amplifying. So if you want a different output offset, change the R1 to R6 ratio.

That's how I'd analyse the circuit. And then I'd whack it into a simulator like LTSpice, and trim the resistors onto obtainable E24 or E12 values.