1

以下公式将始终返回下一行的第 4 列 (D) 的值。

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

有没有更好的方法来达到同样的效果?

4

4 回答 4

2

在复制和粘贴时,将“$”字符放在列字母或行号前面会锁定它。

例如:

17 加元
于 2009-12-15T23:56:32.763 回答
2

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

=INDIRECT("$D" & ROW()+1)
于 2009-12-16T00:01:27.530 回答
2

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

如果您的意思是更短/更简单和 A1 风格,那么 shoover 的回答很好:

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

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

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

但是,如果您追求最快的解决方案,或者只是更喜欢非易失性解决方案,那么命名公式就是要走的路:

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

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

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

    =Col4Down1

!这是因为在命名公式中使用 bang 运算符时有一个鲜为人知的怪癖。当您不指定工作表名称时,!$D:$D始终引用第四列,而与列删除/插入无关。将其视为绝对绝对寻址。

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

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

或者,如果您更喜欢 R1C1 样式并已将电子表格设置为使用此样式:

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

于 2013-01-19T01:59:48.690 回答
1

如果您知道范围,这将起作用:

=INDEX($A$1:$E$4, ROW()+1, 4)
于 2009-12-15T23:51:40.527 回答