Вы упомянули «другую формулу», поэтому я предполагаю, что вы хотите сделать это в формуле рабочего листа (а не в функции VBA или подпрограмме). Давайте начнем с малого. Excel поддерживает ссылки в стиле A1 (An) и ссылки в стиле R1C1 (R n C n). Все примеры, которые вы использовали (D3
, D15
, E3
, J7
и т.д.), Являются ссылками в стиле A1 - буква столбца (или, возможно, последовательность букв; за столбцами X
, Y
и Z
следуют AA
, AB
, AC
и т.д.), За которым следует номер строки.
Ссылки R1C1-стиль почти очевидны - они построены из номера строки и номер столбца, разделенные буквы R
и C
Таким образом, E3
эквивалентно R3C5
(строка 3, столбец 5), а J7
эквивалентно R7C10
.
Хотелось бы, чтобы вы сказали немного больше о том, что вы уже делали, чтобы я знал, что мне не нужно вам объяснять. Я надеюсь, вы знаете, что в формуле INDIRECT("E3")
более или менее эквивалентен E3
, за исключением того, что при вызове INDIRECT
можно вычислить строковый параметр. Возможно, вы этого не знаете
INDIRECT("R3C5", FALSE)
аналогично эквивалентно E3
.
INDIRECT
дает вам только ссылку на одну ячейку.
Чтобы перейти от этого к диапазону, мы используем функцию OFFSET
. Общий формат
OFFSET(
base_cell_reference ,
row_offset ,
column_offset ,
высота (строки) ,
ширина (столбцы) )
Итак, чтобы получить E3:J7
, мы делаем
OFFSET(INDIRECT("R" & 3 & "C" & 5, FALSE), 0, 0, 7-3+1, 10-5+1)
где все числа могут быть формулами (например, ссылки на другие ячейки).
(Примечание: +1
означают стандартную «проблему ограждения» - диапазон, начинающийся со строки 3 и включающий строку 7, имеет высоту 5 строк, а не 4.) Вышеупомянутое выражение может использоваться везде, где может использоваться простой диапазон; например, в качестве параметра к SUM
.
Еще одним подходом к решению вашей проблемы может быть использование именованных ячеек. Если вы дадите ячейке E3
имя Fred
, а ячейке J7
- Barney
, вы можете сказать SUM(Fred:Barney)
.