代码之家  ›  专栏  ›  技术社区  ›  jbochi

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

  •  1
  • jbochi  · 技术社区  · 15 年前

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

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

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

    4 回复  |  直到 12 年前
        1
  •  2
  •   shoover    15 年前

    A1式的寻址方式与此类似,但语言较少且易于阅读(imho):

    =INDIRECT("$D" & ROW()+1)
    
        2
  •  2
  •   EToreo    15 年前

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

    如:

    $C$17
        3
  •  2
  •   robinCTS    12 年前

    取决于你所说的“更好”是什么意思——)

    如果您的意思是较短/较简单和A1样式,那么Shoover的答案很好:

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

    如果您喜欢R1C1样式(更容易阅读imho;-),那么一个更短/更简单/更快的解决方案是:

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

    但是,如果您想要的是最快的解决方案,或者只是喜欢非易失性的解决方案,那么命名公式就是一种方法:

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

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

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

      =Col4Down1

    这是因为在使用bang操作符时有一个鲜为人知的怪癖。 ! 在命名公式中。如果不指定SheetName, !$D:$D 总是指第四列 不考虑列的删除/插入 . 把它当作绝对地址。

    最后,兰斯·罗伯茨的回答虽然不易改变,但也有一些问题。正如他所提到的,它只能在某些预定的行中工作。其次,插入/删除A-D中的任何列或上面的任何行都将使其中断。修改它以修复这些问题会导致以下问题(如果输入到单元格b2中):

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

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

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

        4
  •  1
  •   Lance Roberts    15 年前

    如果您知道范围:

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