我想使用方括号表单公式表示法从表格 out 引用表格中的单个单元格。
像: [MyTable [MyField] 3] 要么 [MyTable [MyField] 3:3]
- 引用MyField列的第3行,或:
[MyTable [MyField] MyRow]
- 引用MyField列的MyRow行(最左边的行标题)。
需要从表外工作,即不能使用@或#ThisRow。
不寻找涉及MATCH,INDEX,OFFSET等的方法。不寻找VBA方法。只是简单的表符号。不寻找手动创建命名范围。
为什么呢?因为,表:))
2013年之前的Excel。
(PS,以前有没有一种方法(pre-Tables)按行和列标题引用单元格?我认为它可能被称为“自动命名”,或类似的东西。)
答案 0 :(得分:4)
=表1 [Column2] 3:3
这样的进展:)
真棒将是一种通过最左列的内容引用行的方法。
THX!
答案 1 :(得分:3)
我们可以重用交集运算符的概念(即两个引用之间的空格)并改进它以获得表中目标项的相对行号,在此称为row_nb
:
=tbl[col] OFFSET(tbl[[#Headers],[col]],row_nb,)
或实际上没有交集(参见下面的评论):
=OFFSET(tbl[[#Headers],[col]],row_nb,)
E.g。 =Table1[Column2] OFFSET(Table1[[#Headers],[Column2]],2,)
这样您就不依赖于工作表中表的位置。好吧,它产生了一个更复杂的公式,其中表名tbl
和列名col
出现两次。以下是对它的一些评论:
您当然可以只保留OFFSET(...)
部分。缺点是,如果row_nb
超过表中实际的订单项数,公式将永远不会返回任何错误。它会返回,例如如果表格下方的单元格为空,则只需0
。
当我们引用一个表外行时保留一个抛出错误的公式,我们可以进一步改进它:使它成为动态的"允许tbl
,col
和row_nb
为参数:
=INDIRECT(tbl&"["&col&"]") OFFSET(INDIRECT(tbl&"[[#Headers],["&col&"]]"),row_nb,)
假设我们已将tbl
,col
和row_nb
定义为命名范围。或者只是使用单元格地址:
=INDIRECT(A1&"["&A2&"]") OFFSET(INDIRECT(A1&"[[#Headers],["&A2&"]]"),A3,)
我不是INDIRECT
的忠实粉丝,但在这种情况下,让公式适应各种表格,列和订单项真的很方便。
答案 2 :(得分:0)
您还可以按以下方式使用index()
函数:
index(MyTable[MyField], 3)
因此,您从表MyTable的MyField列中获得第3行。