hi Keith,

Welcome to the Forum

What about using the oldie, but still, a goody, of the Vlookup function?
It would remove the volatility of using offset but still allow some flexibility to change your returned column.

I've taken the liberty of suggesting a modified Layout of:
row 1 for the sheet header,
row 2 for parameters/subtotals etc
row 3 for column headers
row 4 as the first data row (the "original row 1")

Then entering the below formulae...
[code]cell C2 = what ever column you want returned (as a number)
cell C4 (& copied down) =VLOOKUP($A4,$A$4:$B$6,$C$2,0) [code]

If you wanted to be slightly fancier, you could use data validation to build a list of column headers to choose from which gives a dropdown in cell C2, then replace the "$C$2" in the vlookup with a Match function* that converts the selected text from the C2 dropdown into a column number.
*Personally, I would put the Match function in a separate cell (such as c1 or swap so it's in c2 (with the list in C1)) or in a named range and then refer to this cell/named range, this approach means it would only be calculated once instead of once for every cell with the vlookup formula.

Of course the above approach could also be modified to work within in named range like Shg's suggestion...

hth
Rob