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


12

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

我在Excel中有一个表(我们称它为Table1)。我想引用其一列和该列中COUNT的数字。我想从另一个单元格(A1)中的值动态标识引用的列,以便获得以下结果:更改时A1,对Table1 [ DynamicallyReferencedColumnName ]进行计数的公式将更新为新引用。

例:

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

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

我怎样才能做到这一点?


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


您正在使用哪个版本的Excel?
CharlieRB 2012年

当前使用Excel 2007
rcphq 2012年

我认为这个问题也可以表述为:“在excel中引用结构化引用的动态组成部分”。
jiggunjer

Answers:


13

您几乎拥有INDIRECT(),但您的逻辑有些偏离。尝试以下方法:

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

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


确实有效,我需要引用整个表。这工作!谢谢!
rcphq 2012年

15

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

实现您所需的非易失性替代方法是使用INDEX / MATCH

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

-蒂姆


优秀,我实际上后来遇到了这种方法,并且从那以后一直在使用它。巧合的是,我开始注意到较早的电子表格出现了巨大的减速,在那之前我在十几张纸上间接使用了电子表格。谢谢!
rcphq 2014年

2

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

然后找到$ A $ 1所指向的列的计数为= Count(indirect(“ Table1 [”&$ a $ 1&“]”))

此间接方法可用于构造表引用的所有部分,例如还可以安排从不同的表中查找

小费。如果$ a $ 1单元格被确认为指向单个表的标题的下拉列表,则对标题标题进行的任何更改都会对表中的列数进行任何更改。


1
(1)第一步:将所需列的名称放入诸如的单元格中A1。  OP已经做到了,并在问题中这样说。  (2)第二步是Excellll答案的精确副本。(4)配置A1为有效列名的下拉列表看起来是个好主意,但是我不理解答案最后一部分的其余部分。
斯科特,

1

这是一篇有关Excel中结构化引用的非常好的文章。在Excel 2010中,此工作方式似乎与在Excel 2007中有所不同。

在Excel表中使用结构化引用

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

通用Excel表

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

=COUNT(Table1[Column1])

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

=COUNT(Table1[Sales])

是的,我的表已使用不同的列正确命名,我想要的是一种方法来告诉excel我想要的列取决于单元格的值,类似这样的=COUNT(Table1[A1])地方其中A1是我要包含列名的单元格
rcphq 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.