To solve this you need to use a lookup table for example:
Say you have headings for the podium finishers in B1 Bib #, C1 Name, D1 Team, E1 Age, F1 Home Base
then you have A2, A3, and A4 showing 1st, 2nd, and 3rd and the podium finsishers listed in B2, B3, and B4 respectively.
Then your table of 300 bike racers data is in columns J2 through N302 in the same order as the podium finishes above. It is important to have the bib numbers first as this is what you will be using to search the data on.
The formula you will be using in cells C2 thru F4 for the podium finishers details will be:
=vlookup(lookup value, data table arrary, column index number,)
where the lookup value will be the bib number in the above case b2, b3 and b4. The data table array will be J2:N302 and the column index number will be 2 for name, 3 for team, 4 for age and 5 for home base (keep in mind 1 is for the bib number you already have) then ensure you have a "," (comma) at the end before the close brackets.
For more information look up the help file for VLOOKUP tables.
Also just a thought, for better data accuracy instead of storing the age you could store their DOB then you wouldn't have to update the sheet for all riders each year.