在 Excel 中动态引用命名表列(通过单元格内容)

在 Excel 中动态引用命名表列(通过单元格内容)

如何在 Excel 2007 中动态引用 Excel 表列?我想引用命名表的命名列,并且引用的列将随单元格的值而变化。

我在 Excel 中有一个表格(我们称之为表格1)。我想引用其中的一列以及COUNT该列中的数字。我想从另一个单元格(A1)中的值动态识别引用的列,以便实现以下结果:当我更改时A1,计算的公式表格1[动态引用列名]更新至新参考。

例子:

  • 如果A1=names    则公式等于COUNT(Table1[names])
  • 如果A1=lastname则公式等于COUNT(Table1[lastname])

我尝试使用=COUNT(Table1[INDIRECT("$A$1")]),但 Excel 说公式包含错误。

我怎样才能做到这一点?


PS 我发现这个可能相关的 MSDN 文档: Excel 重新计算

答案1

您几乎已经解决了这个问题INDIRECT(),但您的逻辑有点不对。请尝试以下方法:

=COUNT(INDIRECT("Table1["&A1&"]"))

要记住的关键是INDIRECT()只接受文本(即字符串)作为第一个参数。因此,您必须将表引用的所有部分作为文本传递给函数。

答案2

使用 INDIRECT 方法是可行的,但最好尽可能避免使用,因为它是一个易失性函数,可能会对电子表格产生巨大的计算影响。

实现您想要的非易失性替代方案是使用 INDEX/MATCH

COUNT(INDEX(Table1, 0, MATCH($A$1, Table1[#Headers], 0)))

—蒂姆

答案3

第一步设置一个文本单元格,其中包含要引用的列的名称(例如 $A$1),例如,$A$1 包含“Column2”。

然后找到 $A$1 引用的列数将是 =Count(indirect("Table1[" & $a$1 & "]"))

这种间接方法可用于构建表引用的所有部分,例如,也可以安排从不同的表中查找

提示。如果 $a$1 单元格被验证为指向单个表格标题的下拉列表,那么对表格中列数的任何更改或对标题的任何更改都将被拾取。

答案4

这是一篇关于 Excel 中的结构化引用的非常好的文章。看起来这在 Excel 2010 中的工作方式与在 Excel 2007 中的工作方式略有不同。

在 Excel 表中使用结构化引用

基本上,您将引用表格,然后引用表格中的列。

通用 Excel 表

在此示例中,您可以像这样引用表 1 的第 1 列:

=COUNT(Table1[Column1])

您可以命名表中的标题列。如果我将 Column1 重命名为 Sales,则公式将变为:

=COUNT(Table1[Sales])

相关内容