Sajan - quick off the mark as usual, I think that's pretty optimal. My original formula (120 chars) is very close to this:
=LOOKUP(1,1/FREQUENCY(0,IFERROR(1/SUBTOTAL(9,OFFSET(x,ROW(x)-MIN(ROW(x)),,FREQUENCY(-ROW(x),-ISTEXT(x)*ROW(x)))),-1)),x)
Thanks to all for your contributions. Looking...