If I use Excel COM I can put a formula at the top of the range and use thge FillDown method to populate all the rows following and this automatically updates all the references in the ensuing row.
Excel.Range c1 = (Excel.Range)aws.Cells[rowDataStart, eupTableCol.ColOffset + colStartValue];
c1.Formula = eupTableCol.OriginalValue;
Excel.Range c2 = (Excel.Range)aws.Cells[rowDataStart + eupTableCol.RowOffset - 1, eupTableCol.ColOffset + colStartValue];
Excel.Range fillRng = (Excel.Range)aws.get_Range(c1, c2);
fillRng.FillDown();