Я не уверен, что вы пытаетесь сделать. Но вот несколько примеров.
Предположим, у меня есть следующий диапазон:
Excel.Worksheet sheet = this.Application.ActiveSheet as Excel.Worksheet;
Excel.Range range = sheet.get_Range("A1", "B5") as Excel.Range;
для перемещения диапазона вниз на n
-номер строки:
int n = 1;
int rows = range.Rows.Count;
int cols = range.Columns.Count;
Excel.Range newRange = range.get_Offset(n, 0).get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row lower
Чтобы переместить ваш нижний ряд вверх
Excel.Range newRange = range.get_Resize(rows-n,cols);
newRange.Select(); //will select the new range will be 1 row higher
Полагаю, вы можете понять, как переместить его из стороны в сторону.
get_Offset()
переместит весь диапазон, а затем вам нужно изменить размер диапазона.
РЕДАКТИРОВАТЬ: Теперь, когда я знаю, что вы хотите.
Чтобы выбрать последнюю ячейку:
Excel.Range lastCell = range.Cells[rows, cols] as Excel.Range;
lastCell.Select();
Теперь вы можете использовать собственную исходную точку, например:
Excel.Range newRange = sheet.get_Range("B1", lastCell);
newRange.Select();