Excel:从固定列中获取相对行值的最佳方法是什么?

下面的公式将总是返回下一行的第四列(D)的值。

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

有没有更好的方法来实现相同的结果?

类似的,但不那么罗嗦,更容易阅读(恕我直言),是A1的解决方式:

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

在字母或行号前放置一个“$”字符会在复制和粘贴时将其locking。

例如:

  $ C $ 17 

取决于你更好的意思:-)

如果你的意思是更短/更简单的A1风格,那么shoover的答案是好的:

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

如果你喜欢R1C1风格(更容易阅读恕我直言;-)),那么更短/更简单/更快的解决scheme是:

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

但是,如果你是在最快的解决scheme之后,或者只是简单地select一个非易失性解决scheme,那么命名公式就是要走的路:

  • 定义一个名称,如Col4Down1 ,并将其值设置为:

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

  • 将下面的公式放在单元格中以获得所需的结果:

    =Col4Down1

这是因为使用砰的操作符时有一点点已知的怪癖! 在一个命名的公式。 如果不指定工作表名称, !$D:$D始终引用第四列, 而不考虑列删除/插入 。 把它看作绝对绝对寻址。

最后,兰斯·罗伯茨(Lance Roberts)的答案虽然是非易失性的,但也有一些问题。 正如他所提到的,它只能在某些预定的行中起作用。 其次,插入/删除AD中的任何列或上面的任何行将会破坏它。 修改它以修复这些导致以下(如果input到单元格B2中):

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

或者如果您偏好R1C1风格并将电子表格设置为使用此样式:

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

这将工作,如果你知道的范围:

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