One option would be to use the quicksort but instead of writing it back in its
original location, write it to a new sheet and then use a series of vlookup
formulae to fill in the columns.
Alternative would be to step through the sorted array, find the relevant row
and copy it to a new sheet.
If you wanted to you could finish by copying the cells from the new sheet back
to the old and deleting the new.