You can do this with formulas and a couple of helper arrays. Say your data is in columns A through J, starting in row 1. Use columns L through P for the five results. Columns R through AA are the first helper array and columns AC through AL are the second helper array. You can hide the helper arrays or move them elsewhere (just adjust the column reference calculations).
Let's start with the first helper array. Excel has all kinds of functions that work from left to right but none that work from right to left (unless you are using the Israeli edition :-) ). The first helper array just reverses the order of the data. Cell R1 would contain:
=OFFSET($A1,0,27-COLUMN(), )
Copy this across to cells S1 through AA1.
The second helper array determines the locations and sequence numbers of the non-zero values. Cell AC1 contains:
=IF(R1=0,"",COLUMN()-28-COUNTIF($R1:R1,0))
Copy this across to columns AD through AL.
Now for the result values. Enter this formula in L1 and copy to M1 through P1:
=INDEX($R1:$AA1, ,MATCH(1,$AC1:$AL1,0))
Edit the M through P formulas, replacing the search parameter in the MATCH function with 2 through 5, so the M through P formulas would be:
=INDEX($R1:$AA1, ,MATCH(2,$AC1:$AL1,0))
=INDEX($R1:$AA1, ,MATCH(3,$AC1:$AL1,0))
=INDEX($R1:$AA1, ,MATCH(4,$AC1:$AL1,0))
=INDEX($R1:$AA1, ,MATCH(5,$AC1:$AL1,0))
Now all of the formulas can be copied down the sheet as needed.