如何在 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 中的工作方式略有不同。
基本上,您将引用表格,然后引用表格中的列。
在此示例中,您可以像这样引用表 1 的第 1 列:
=COUNT(Table1[Column1])
您可以命名表中的标题列。如果我将 Column1 重命名为 Sales,则公式将变为:
=COUNT(Table1[Sales])