将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))