If you list the first cell in each range and the number of cells in each range in the 'Const' lines below, see if this does what you want. It is basically going back and using Domenic's original formula idea.
<font face=Courier New><br><SPAN style="color:#00007F">Sub</SPAN> RankIt()<br> <SPAN style="color:#00007F">Dim</SPAN> aFirstCells<br> <SPAN style="color:#00007F">Dim</SPAN> frmlabase <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN>, frmla <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN><br> <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN><br> <br> <SPAN style="color:#00007F">Const</SPAN> sFirstCells <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = "U8,U208,U408"<br> <SPAN style="color:#00007F">Const</SPAN> BlockSize <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN> = 36<br> <br> frmlabase = "=RANK(#,(" & sFirstCells & "))"<br> aFirstCells = Split(sFirstCells, ",")<br> <SPAN style="color:#00007F">For</SPAN> i = 0 <SPAN style="color:#00007F">To</SPAN> <SPAN style="color:#00007F">UBound</SPAN>(aFirstCells)<br> frmla = Replace(frmlabase, "#", aFirstCells(i), 1, 1, vbTextCompare)<br> Range(aFirstCells(i)).Offset(, 1).Resize(BlockSize).Formula = frmla<br> <SPAN style="color:#00007F">Next</SPAN> i<br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br></FONT>