如何使用表符号按行号或水平标题引用Excel表格单元格?

joh*_*why 5 excel excel-formula

我想使用方括号表格式表示法从表外部引用表中的单个单元格。

类似于:[MyTable [MyField] 3]或[MyTable [MyField] 3:3]

-引用MyField列的第三行,或:

[MyTable [MyField] MyRow]

-引用MyField列的MyRow行(最左边的行标题)。

需要在表外工作,即不能使用@或#ThisRow。

不查找涉及MATCH,INDEX,OFFSET等的方法。不查找VBA方法。只是简单的表符号。不寻找手动创建命名范围。

为什么?因为,表:)

2013年前的Excel。

(PS,以前不是一种通过行和列标题来引用单元格的方法(预表)吗?我认为它可能被称为“自动命名”,或类似的东西。)

Jer*_*y T 8

您还可以使用index()函数,如下所示:

index(MyTable[MyField], 3)
Run Code Online (Sandbox Code Playgroud)

因此,您可以从表 MyTable 的 MyField 列中获取第 3 行。

参考: https: //www.ozgrid.com/forum/forum/help-forums/excel-general/116365-reference-a-single-cell-in-a-table-using-structured-referencing

  • 我看到了一个好处:即使表格不是从顶行开始,它也会起作用。如果表格不是从工作表第 1 行开始,则“3:3”表示法将被破坏。 (2认同)

joh*_*why 6

呵呵,这很好用:

= 表 1[列 2] 3:3

所以这是进步:)

很棒的是一种通过最左侧列的内容引用行的方法。

谢谢!


Gae*_*tan 5

我们可以重用交集运算符(即两个引用之间的空格)的思想并对其进行改进,以获得表中目标项的相对行号,如下所示row_nb

=tbl[col] OFFSET(tbl[[#Headers],[col]],row_nb,)

或者实际上没有交集(参见下面的评论):

=OFFSET(tbl[[#Headers],[col]],row_nb,)

例如=Table1[Column2] OFFSET(Table1[[#Headers],[Column2]],2,)

这样您就不必依赖工作表中表格的位置。好吧,它会产生一个更复杂的公式,其中表名tbl和列名col出现两次。以下是一些关于它的评论:

  1. 您当然可以OFFSET(...)只保留该部分。缺点是,如果row_nb超过表中行项目的实际数量,该公式将永远不会返回任何错误。0例如,如果表格下方的单元格为空,它将返回。

  2. 保留一个在引用表外行时引发错误的公式,我们可以进一步改进它:通过让 、tblcolberow_nb参数使其成为“动态”:

=INDIRECT(tbl&"["&col&"]") OFFSET(INDIRECT(tbl&"[[#Headers],["&col&"]]"),row_nb,)

假设我们已经将tbl,colrow_nb定义为命名范围。或者只使用单元格地址:

=INDIRECT(A1&"["&A2&"]") OFFSET(INDIRECT(A1&"[[#Headers],["&A2&"]]"),A3,)

我不太喜欢,INDIRECT但在这种情况下,让公式适应各种表、列和行项目确实派上用场。