好吧……这看起来很疯狂。这应该适合你。我在我的机器上对其进行了测试,它可以工作:
=HYPERLINK(MID(CELL("filename"),SEARCH("[",CELL("filename")), SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))+1) & ADDRESS(MATCH(CZ54,Sheet2!$A$1:$A$176),3,,,"sheet2"),VLOOKUP(CZ54,Sheet2!$A$1:$Y$176,3,FALSE))
让我们稍微分解一下,以解释一些部分:
MID(CELL("filename"),SEARCH("[",CELL("filename")), SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))+1)
返回一个字符串 [currentFileName],它是工作簿中超链接所需的格式。
MATCH(CZ54,Sheet2!$A$1:$A$176),3,,,"sheet2")
返回 VLookup 范围第一列中 CZ54 值的行号。
ADDRESS(MATCH(CZ54,Sheet2!$A$1:$A$176),3,,,"sheet2")
返回找到的行的地址,以及 sheet2 中的列(3,来自您的 vlookup)。
如此结合:
MID(CELL("filename"),SEARCH("[",CELL("filename")), SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))+1) & ADDRESS(MATCH(CZ54,Sheet2!$A$1:$A$176),3,,,"sheet2")
返回超链接的实际地址,即HYPERLINK
公式的第一个参数。
第二个参数是您提供的 Vlookup,瞧。
编辑:如果有人尝试将其用于类似问题,则会发出警告,如果 Match 或 Vlookup 中使用的 lookup_array 不是分别从第 1 行或第 1 列开始,您将需要用 +( 起始行偏移发送到 ADDRESS 的值或列 - 1)。示例:Match(CZ54,$A$2:$A$176)+1
而不是MATCH(CZ54,Sheet2!$A$1:$A$176)
.