Excel: Какой лучший способ получить значение относительной строки, но из фиксированной колонки?
Следующая формула всегда будет возвращать значение 4-го столбца (D) следующей строки.
=INDIRECT("R[1]C[" & 4-COLUMN() & "]",FALSE)
Есть ли лучший способ достичь таких же результатов?
4 ответа
Подобным, но менее многословным и более легким для чтения (ИМХО), является стиль адресации А1:
=INDIRECT("$D" & ROW()+1)
Зависит от того, что вы подразумеваете под лучше:-)
Если вы имеете в виду короче / проще и стиль А1, то ответ шовера хорош:
=INDIRECT("$D"&ROW()+1)
Если вы предпочитаете стиль R1C1 (проще читать IMHO;-)), тогда еще более короткое / простое / быстрое решение:
=INDIRECT("R[1]C4",)
Однако, если вы ищете самое быстрое решение или просто предпочитаете энергонезависимое решение, тогда Именованная формула - это то, что вам нужно:
Определите имя, скажем
Col4Down1
и установите его значение в:=INDEX(!$D:$D,ROW()+1)
Поместите следующую формулу в ячейку, чтобы получить желаемый результат:
=Col4Down1
Это работает из-за немного известной причуды при использовании оператора взрыва !
в именованной формуле. Когда вы не указываете имя листа, !$D:$D
всегда относится к четвертому столбцу независимо от удаления / вставки столбца. Думайте об этом как об абсолютно-абсолютной адресации.
Наконец, ответ Лэнса Робертса, будучи неустойчивым, страдает парой проблем. Как он упоминает, он будет работать только в определенных заранее определенных строках. Во-вторых, вставка / удаление любых столбцов из AD или любых строк выше приведут к его поломке. Изменение его для исправления приводит к следующему (если он введен в ячейку B2):
=INDEX(B:B:2:2,ROW()+1,4)
или если вы предпочитаете стиль R1C1 и настроили свою таблицу на использование этого стиля:
=INDEX(R:C,ROW()+1,4)
Помещение символа "$" перед буквой столбца или номером строки блокирует его при копировании и вставке.
Например:
$ C $ 17
Это будет работать, если вы знаете диапазон:
=INDEX($A$1:$E$4, ROW()+1, 4)