如何通过在excel中使用结构化引用来获取表列的索引?

Dan*_*nor 6 excel excel-2007 excel-formula

我有一个有3列的表.我想编写一个公式,给定结构化引用,返回列的索引.这将帮助我使用结构化引用编写VLookup公式.

因此,例如,为表MyTable的列A,B,C我想能写:

=GetIndex(MyTable[C])
Run Code Online (Sandbox Code Playgroud)

并让它返回3.

现在我只是确保表格范围从工作表的第一列开始,然后我写

=Column(MyTable[C])
Run Code Online (Sandbox Code Playgroud)

但我想要一些更强大的东西.

Rob*_*rns 7

根据你的例子,一个合适的公式是

=COLUMN(MyTable[C])-COLUMN(MyTable)+1
Run Code Online (Sandbox Code Playgroud)

forumla的第一部分COLUMN(MyTable[C])将返回引用列的列号.

公式COLUMN(MyTable)的第二部分将始终返回表的第一列的列号.


Bri*_*ire 5

您提出的问题(或与之相近的问题)的另一个解决方案是使用类似=MATCH("C",MyTable[#Headers],0),它将在您发布的示例中返回 3 。

但是,如果您使用 INDEX 而不是 VLOOKUP,则不需要这样做。例如,如果您想在 A 等于 2 的行(假设不超过 1)中找到 C 的值,您可以使用类似 的公式=INDEX(MyTable[C],MATCH(2,MyTable[A],0)),它很好地自我记录。

  • 在此公式中使用字符串文字“C”意味着如果您更改引用表中 C 列的名称,则此公式将中断。Robert Mearns 的回答能够使用“MyTable[C]”作为引用,当您重命名引用表中的 C 列时,该引用将更新。 (2认同)