我想引用另一个工作簿,假设其名称为“My workbook.xlsm”,并在Excel中使用INDIRECT函数。
但是“我的工作簿”文件名可以在其之前或之后包含任何其他字符串/字符。
假设我正在尝试查找“查找值”
= VLOOKUP(“”&“Lookup Value”&“”,INDIRECT(“'[”&“”&“my workbook”&“!EM> “&安培;” XLSM “&安培;”] “&安培;”(与 “& A7&安培;”) “&安培;”'$ A:$ H“),8,FALSE)
我已经尝试了上面的公式,当我在“我的工作簿”引用之前和之后删除通配符并完全按照原样写出工作簿的名称时,公式工作正常,但是当我放置通配符时公式给出REF错误。
我肯定做错了。
任何人都可以帮忙吗?
提前感谢。
答案 0 :(得分:6)
必须打开以INDIRECT()引用的工作簿才能使引用生效。因此,除非您碰巧将所有可能符合通配符标准的文件与您的第一个工作簿同时打开,否则此方法从一开始就是非启动性的。
您可能需要查看名为MOREFUNC.XLL的免费加载项,该加载项具有与已关闭的工作簿一起使用的函数INDIRECT.EXT()。
编辑:上面的公式中没有通配符。对于单个字符,通配符可以是?
,对于任意数量的字符,可以是*
。 INDIRECT与表单名称的通配符用法在注释中的视频中进行了说明。对于您的示例,公式看起来像
=VLOOKUP(A2,INDIRECT("'[*my workbook*.xlsx]Sheet1'!$A:$H"),8,0)
没有必要将一个字符串拆分成一系列连接的字符串,但如果你这样做,它就没有区别。
但是,您会发现此公式将始终返回错误。间接无法解析文件名中的通配符。它适用于工作表名称。
正如我在评论中所说:由于具有查找表的文件无论如何都需要打开,因此INDIRECT()可以在第一时间工作,您可以使用常规Vlookup直接引用“我的工作簿”。如果重命名该文件,Vlookup公式将立即反映更改。