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,以前不是一种通过行和列标题来引用单元格的方法(预表)吗?我认为它可能被称为“自动命名”,或类似的东西。)
您还可以使用index()函数,如下所示:
index(MyTable[MyField], 3)
Run Code Online (Sandbox Code Playgroud)
因此,您可以从表 MyTable 的 MyField 列中获取第 3 行。
我们可以重用交集运算符(即两个引用之间的空格)的思想并对其进行改进,以获得表中目标项的相对行号,如下所示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出现两次。以下是一些关于它的评论:
您当然可以OFFSET(...)只保留该部分。缺点是,如果row_nb超过表中行项目的实际数量,该公式将永远不会返回任何错误。0例如,如果表格下方的单元格为空,它将返回。
保留一个在引用表外行时引发错误的公式,我们可以进一步改进它:通过让 、tbl和colberow_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但在这种情况下,让公式适应各种表、列和行项目确实派上用场。
| 归档时间: |
|
| 查看次数: |
7941 次 |
| 最近记录: |