在Excel中使用索引和匹配;为什么命名范围不起作用?

时间:2019-01-14 19:29:31

标签: excel excel-formula

我有一个表,用于汇总其他表中的一些数据;数据几乎全部是文本,因此数据透视表不是答案。我在工作表上有一张桌子,如下所示... [Screenshot]

这是D:L ...列的典型公式。
公式:=INDEX(tblITPM,MATCH(tblHCSmry[[#Headers],[Data Source]],tblITPM[[#All],[Column1]],0),MATCH([@MetricName],'SheetA'!$A$2:$D$2,0))

分别来看,这些公式似乎运行良好,但是计算的总和仅在我的摘要表(tblHCSmry)的前3行中起作用。有两个我不知道如何解决的问题:

  1. INDEX的“数组”部分中,我正在引用表 B列中列出的名称(表名);像我一样硬编码 上面有(tblTableA)使所有需要引用的项目 单独工作表上的单独表失败。
  2. MATCH公式(MATCH([@MetricName],'1_ITPM_Summary'!$A2:$D2,0))有一个类似的问题;由于“ lookup_array”是硬编码的,因此我对前3个表(2、3或4)有正确的答案。因此,尽管当我想通过指向tblHCSmry的B列来引用不同的表(例如tblTableB)时,问题再次出现。

我想主要的问题是:是否可以使用表的命名范围,还是需要使用“'SheetA'!A3:D3”格式?如果是这样,有没有办法动态更改“'SheetA'!”到“'SheetB'!”通过参考tblHCSmry的B列? FWIW:我试图用参考来合并工作表的名称,但这没用。

1 个答案:

答案 0 :(得分:1)

您可以使用命名范围,但是您需要具有指向单元格中数据位置的指针,这似乎是您在列A和B中已经拥有的指针。然后,您可以使用{{ 1}}。 =INDIRECT()允许您获取单元格的值并将其用作引用,而不是引用该单元格本身。

例如

=INDIRECT()

将使您的return数组成为=INDEX(INDIRECT([@TableName]),MATCH(tblHCSmry[[#Headers],[Data Source]],tblITPM[[#All],[Column1]],0),MATCH([@MetricName],INDIRECT("'" & [@TabName] & "'!$A$2:$D$2"),0)) 中引用的内容,而第二个[@TableName]函数中的array参数将成为MATCH中引用的内容

MSDN在这里提供了INDIRECT()的非常基本的文档,但是就创建更多的动态公式而言,您可以完成很多工作。