将Excel的VLOOKUP更改为索引

我有一个电子表格,当VLOOKUPfind一个列的部分匹配时,会创build一个超链接。 这一列被称为文件列表。 文件列表包含20,000行。 我的电子表格正在放缓。 我被告知,如果我从VLOOKUP更改为INDEX会更好。 我根本不熟悉INDEX。 但是我怎么做?

我的公式现在是这样的:

=IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & VLOOKUP(CONCATENATE("*"&B9&"*"),FileName!D:D,1,FALSE),2013),"") 

你可以放弃CONCATENATE 。 它不会有太大的改变,但它是一个额外的处理:

 =IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & INDEX(FileName!D:D,MATCH("*"&B9&"*",FileName!D:D,0)),2013),"") 

另外,如果你有确切的行数,使用它。 例如,如果您有25000行,请使用:

 =IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & INDEX(FileName!D$1:D$25000,MATCH("*"&B9&"*",FileName!D$1:D$25000,0)),2013),"") 

公式稍微长一点,但是肯定会花费更less的时间(只要不匹配,会缩短时间,因为只要找不到匹配,就会继续查看其他单元格)。


要将超链接命名为匹配结果,您需要重复INDEX公式:

 =IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & INDEX(FileName!D$1:D$25000,MATCH("*"&B9&"*",FileName!D$1:D$25000,0)), INDEX(FileName!D$1:D$25000,MATCH("*"&B9&"*",FileName!D$1:D$25000,0))),"") 

如果B9是空白的,那么:

 =IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & INDEX(FileName!D$1:D$25000,IF(B9="",NA(),MATCH("*"&B9&"*",FileName!D$1:D$25000,0))), INDEX(FileName!D$1:D$25000,IF(B9="",NA(),MATCH("*"&B9&"*",FileName!D$1:D$25000,0)))),"") 

用这样的东西replace你的vlookup:

 INDEX(Filename!E:E,MATCH(CONCATENATE("*"&B9&"*"),FileName!D:D,0)) 

编辑

我的错。 我在vlookup中误读了1作为2。

这应该工作:

 INDEX(Filename!D:D,MATCH(CONCATENATE("*"&B9&"*"),FileName!D:D,0))