我有一个这样的 INDEX 公式:
=INDEX(Data3,MATCH(G4,Sheet2!$A$14:$A$17,0),VLOOKUP(F4,Threshold,2,TRUE))
但是,我想将其应用于数据,其中我希望 INDEX 公式返回数据的表可能是三个表“Data1,Data2 或 Data3”之一,具体取决于第三个因素。
我认为我可以按如下方式解决此问题:
=INDEX(VLOOKUP(D4,ChargeYear,2,TRUE),MATCH(G4,Sheet2!$A$14:$A$17,0),VLOOKUP(F4,Threshold,2,TRUE))
第一个 VLOOKUP 确实从 ChargeYear 表中返回 Data1、Data2 或 Data3,但它将返回值放在双引号中,因为它是一个文本值(我假设),因此 INDEX 公式无法将其识别为表名。有什么办法可以解决这个问题吗?
答案1
使用间接是一种选择 -
=INDEX(INDIRECT(VLOOKUP(1,Table4,2,0)&"[#ALL]"),MATCH("c",INDIRECT(VLOOKUP(1,Table4,2,0)&"[[#All],[Column1]]")),2)
表 4 开始于A1
;表 5 开始于A6
;而表 6 开始于D6
。
您可以看到=VLOOKUP(1,Table4,2,0)
表中列出的其中一个表的引用。
因此,我们将其扩展为,=MATCH("c",INDIRECT(VLOOKUP(1,Table4,2,0)&"[[#All],[Column1]]"))
以使用该表来匹配“c”。它适用于indirect
。
现在,将其扩展为这样的索引/匹配 -=INDEX(INDIRECT(VLOOKUP(1,Table4,2,0)&"[#ALL]"),MATCH("c",INDIRECT(VLOOKUP(1,Table4,2,0)&"[[#All],[Column1]]")),2)