【问题标题】:Change excel VLOOKUP to index将 excel VLOOKUP 更改为索引
【发布时间】:2014-03-27 18:57:16
【问题描述】:

我有一个电子表格,当 VLOOKUP 从一列中找到部分匹配项时,它会创建一个超链接。这一列称为 FILE LIST。 FILE LIST 包含 20,000 行。我的电子表格速度变慢了。我被告知如果我从 VLOOKUP 更改为 INDEX 会更好。我根本不熟悉INDEX。但是我该怎么做呢?

我现在的公式是这样的:

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

【问题讨论】:

    标签: excel indexing excel-formula vlookup


    【解决方案1】:

    您实际上可以删除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),"")
    

    公式有点长,但肯定会花更少的时间(只要没有匹配,它就会缩短时间,因为只要找到不匹配的,它就会继续寻找其他单元格。


    要将超链接命名为匹配结果,您需要重复 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)))),"")
    

    【讨论】:

    • 感谢您的提示。而不是命名超链接 2013。我希望它被命名为匹配的结果。我该怎么做?
    • @user3242868 您的意思是要将超链接中的所有2013(我可以看到两个)更改为匹配的结果?例如,如果匹配的结果是 2014,那么超链接将被命名为 2014?
    • 是的,这就是我想要的。那么我用什么来代替 2013 年呢?
    • @user3242868 你必须重复INDEX。我将在我的答案中对其进行编辑,因为在那里更容易看到。或者,如果您可以将 =INDEX(FileName!D$1:D$25000,MATCH("*"&B9&"*",FileName!D$1:D$25000,0)) 放在单独的单元格中,例如 E9,那么您只需将 E9 改为:=IFERROR(HYPERLINK("\\oes-cityhall\DATA\CITYWIDE\public\fppc filings\2013\" & E9, E9), "")
    • 效果很好。还有一个问题,如果 B9 为空,我应该放什么?目前,当它应该保持空白时,它正在返回一个值。
    【解决方案2】:

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

    【讨论】:

    • 我的 E 列是空的。
    • 我误读了您想要返回的内容。我以为你想要下一列的值。将文件名!E:E 更改为文件名!D:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多