If you want to do it with a formula, there are a lot of ways to do it but here's one that works. Assume the value "ID" is in cell A1 so your table is in A1:E5. Place the following formula in cell A10 and copy it into cells A11 through A25. If your table isn't in A1:E5 or you don't want to put the list in A10:A25, then adjust the reference "$A$1" to whatever cell has the "ID" string (the top left corner of the table) and change "A$9" to the cell above the beginning of your list. You can't put top of the list in row 1 with this formula.
=OFFSET($A$1,TRUNC((ROW()-ROW(A$9)-1)/4,0)+1,0,1,1)& " Sub"&ROW()-ROW(A$9)-TRUNC((ROW()-ROW(A$9)-1)/4,0)*4&" "& OFFSET($A$1,TRUNC((ROW()-ROW(A$9)-1)/4,0)+1,ROW()-ROW(A$9)-TRUNC((ROW()-ROW(A$9)-1)/4,0)*4,1,1)
The formula uses "TRUNC((ROW()-ROW(A$9)-1)/4,0)+1" to determine the table row you want and "ROW()-ROW(A$9)-TRUNC((ROW()-ROW(A$9)-1)/4,0)" to determine the table column for the "Subx" value. If you have more than four columns of "Subs", change the value of 4 in the formula to the number of "Sub" columns. There are ways to determine that number on the fly but I tried to keep it simple.