我有一个表,用于汇总其他表中的一些数据;数据几乎全部是文本,因此数据透视表不是答案。我在工作表上有一张桌子,如下所示...
这是D:L ...列的典型公式。
公式:=INDEX(tblITPM,MATCH(tblHCSmry[[#Headers],[Data Source]],tblITPM[[#All],[Column1]],0),MATCH([@MetricName],'SheetA'!$A$2:$D$2,0))
分别来看,这些公式似乎运行良好,但是计算的总和仅在我的摘要表(tblHCSmry)的前3行中起作用。有两个我不知道如何解决的问题:
INDEX
的“数组”部分中,我正在引用表
B列中列出的名称(表名);像我一样硬编码
上面有(tblTableA)使所有需要引用的项目
单独工作表上的单独表失败。 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:我试图用参考来合并工作表的名称,但这没用。
答案 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()的非常基本的文档,但是就创建更多的动态公式而言,您可以完成很多工作。