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)
Другие вопросы по тегам