Excel: Какой лучший способ получить значение относительной строки, но из фиксированной колонки? - PullRequest
1 голос
/ 16 декабря 2009

Следующая формула всегда будет возвращать значение 4-го столбца (D) следующей строки.

=INDIRECT("R[1]C[" & 4-COLUMN() & "]",FALSE)

Есть ли лучший способ добиться таких же результатов?

Ответы [ 4 ]

2 голосов
/ 19 января 2013

Зависит от того, что вы подразумеваете под лучше: -)

Если вы имеете в виду короче / проще и стиль А1, то ответ шовера будет хорошим:

=INDIRECT("$D"&ROW()+1)

Если вы предпочитаете стиль R1C1 (имхо легче читать ;-)), тогда еще более короткое / простое / быстрое решение:

=INDIRECT("R[1]C4",)

Однако, если вы стремитесь к самому быстрому решению или просто предпочитаете энергонезависимое решение, тогда Именованная формула - это путь:

  • Определите имя, скажем Col4Down1, и установите его значение равным:

    =INDEX(!$D:$D,ROW()+1)

  • Поместите следующую формулу в ячейку, чтобы получить желаемый результат:

    =Col4Down1

Это работает из-за малоизвестной причуды при использовании оператора взрыва ! в Именованной формуле. Если вы не укажете имя листа, !$D:$D всегда ссылается на четвертый столбец , независимо от удаления / вставки столбца . Думайте об этом как об абсолютно-абсолютной адресации.

Наконец, ответ Ланса Робертса, несмотря на то, что он энергонезависим, страдает парой проблем. Как он упоминает, он будет работать только в определенных заранее определенных строках. Во-вторых, вставка / удаление любых столбцов из A-D, или любых строк выше, сломает его. Изменение его для исправления приводит к следующему (если оно введено в ячейку B2):

=INDEX(B:B:2:2,ROW()+1,4)

или если вы предпочитаете стиль R1C1 и настроили электронную таблицу для использования этого стиля:

=INDEX(R:C,ROW()+1,4)

2 голосов
/ 16 декабря 2009

Помещение символа «$» перед буквой столбца или номером строки блокирует его при копировании и вставке.

Например:

$C$17
2 голосов
/ 16 декабря 2009

Аналогично, но менее многословно и проще для чтения (ИМХО), стиль адресации А1:

=INDIRECT("$D" & ROW()+1)
1 голос
/ 16 декабря 2009

Это будет работать, если вы знаете диапазон:

=INDEX($A$1:$E$4, ROW()+1, 4)
...