A foolproof way to define dynamic named ranges is to use OFFSET().
E.g.
Code:
=OFFSET(AnchorPoint, RowsDown, ColumnsRight, NumberOfRows, NumberOfColumns)
where
AnchorPoint is address of some single cell which you are sure it will never be deleted, and is above or in same row as the range you want to define, and left or in same column as the range you want to define;
RowsDown is the number of rows from AnchorPoint to topmost row of range you want to define;
ColumnsRight is the number of columns from AnchorPoint to leftmost column of range you want to define;
NumberOfRows is the number of rows you want in defined range;
NumberOfColumns is the number of columns you want in defined range.
E.g. you want to define a range P5:P1, anchored to cell P1:
Code:
=OFFSET($P$1,4,,6,1)
To make the range dynamic, you have to replace at least one of parameters to be calculated by formula.
To get any detailed help you have to attach some example table here.