使用VLOOKUP函數(shù)的近似匹配時會遇到返回的結果不正確(不是錯誤值?。?,你可以用下面的技巧解決這個問題! 前言 VLOOKUP函數(shù)的近似匹配一般用于數(shù)值類型的分段查找,我們以前介紹過。不過在一些特殊情況下,我們可以在文本類型的查找中使用近似匹配。 比如, 一般情況下,C5的公式如下: =VLOOKUP($B5,$I$5:$O$10,MATCH(C$4,$I$4:$O$4,0),0) 其中用到了match函數(shù),是為了動態(tài)返回不同的列。具體請看這里。 但是,如果這個表比較大,比如,有幾千行甚至更多,這時,有可能你的Excel表格就會運行緩慢,每次輸入一個數(shù)據(jù),都要計算半天。 特別強調一下,此時,盡量不要用手動計算模式。它帶來的問題遠超過它的好處!切記 此時,我們可以將公式改成: =VLOOKUP($B5,$I$5:$O$10,MATCH(C$4,$I$4:$O$4,0),1) 注意,前后兩個公式的區(qū)別就是最后一個參數(shù)從0變成了1,VLOOKUP從精確匹配改為近似匹配。 這么一改,你的表格的計算速度會提升5-10倍(具體提升速度根據(jù)數(shù)據(jù)量不同而不同,數(shù)據(jù)量越大,提升的越多) 這么改有一個要求,就是右邊中必須按照第一列升序排序。不過相對于速度的提升,這個要求應該不算什么了。 問題 但是,這個公式有一個問題: “華箏”這個任務沒有在右表中出現(xiàn),如果用精確匹配的話,會返回一個#N/A的錯誤值,我們很容易就會知道出了問題,去補充右表就可以了。但是現(xiàn)在使用了近似匹配,并沒有返回錯誤值,但是得到了錯誤的結果。我們就很難發(fā)現(xiàn)是否資料不完整。 這是由VLOOKUP近似匹配的原理導致的。只要用近似匹配,就會出現(xiàn)這個問題。 解決方案——二次查找 解決這個問題,只需要將公式改為: =IF(VLOOKUP($B9,$I$5:$O$10,1,1)=$B9,VLOOKUP($B9,$I$5:$O$10,MATCH(E$4,$I$4:$O$4,0),1),"") 這里我們使用了IF公式,在條件部分,我們使用 VLOOKUP($B9,$I$5:$O$10,1,1)=$B9 VLOOKUP函數(shù)返回的是第一列,即姓名,我們判斷的是這個返回的姓名是否等于我們的查找值,如果True,表示真的找到了匹配行,于是就返回原來的查找公式: VLOOKUP($B9 ,$I$5:$O$10,MATCH(E$4,$I$4:$O$4,0),1) 如果False,表示找到了假的匹配行,返回一個空白單元格 下面是返回結果: 不要擔心兩次VLOOKUP會導致速度變慢。這個影響微乎其微! ·end· |
|