Excel公式中的LookUp三劍客(可以取代Vlookup的神祕公式)

1.前言

Microsoft Excel是Microsoft爲使用Windows和Apple Macintosh操作系統的電腦編寫的一款電子表格軟件。直觀的界面、出色的計算功能和圖表工具,再加上成功的市場營銷,使Excel成爲最流行的個人計算機數據處理軟件。由於他借組公式發揮很強的計算、數據處理能力,所以涉及範圍極廣,從財務報表到工程預算,他也可以成爲家庭收支計算的重要利器。在和同事閒聊的時候一把也會用Vlookup函數衡量你對excel的掌握程度,然後他真的有這麼強的嗎,有沒有可以取代他的函數?那麼這次,我們主要從Excel的公式入手,分析一下他裏面的涉及到的lookup的三個函數,因爲他們可以讓我們達到事半功倍的效果。那麼lookUp究竟是什麼呢,讓我們繼續往下看。

2. LookUp函數

2.1 基本語法

2.1.1 語法一

=LOOKUP(lookup_value,lookup_vector,[result_vector])

參數:

lookup_value:要查找的值。

lookup_vector:需要查找的列

result_vector:可選,通過loolup_value在looup_vector查找到值,對應此選擇列的值。

案例:

我爲此準備了試驗數據:

測試數據
實例1

首先我們明確lookup查找的方式是通過二分查找法實現的,所以對於被查詢列必須排序,否則會出現問題。好了,我們就分析一下他的執行順序。我們以6000爲例。step1,數據源爲5列,所以二分位爲pos = int((5+1)/2) = 3,位置3所對應的數值爲3000,excel認定比6000小,應該從下面查找。接下來數據範圍變成4500、9000,索引位置是pos = int((2+1)/2) = 1,即所對應的位置是4500,比6000還小,繼續查找,發現9000比6000大,所以按照上一個索引位置作爲輸出值,即輸出20。

我們進一步做一分析,對於這個公式的三個參數(數值,數組1,數組2),後面兩個數組的個數是一致的,而且保證一一對應。公式執行邏輯是利用二分查找法進行查詢。直到查到爲止(如果查不到,按照上一個遍歷值爲匹配項),根據數組1的匹配項的索引值在數組2獲取到數值作爲返回值。所以我們就有了如下的公式變形:

=lookup(1,0/(查找值=查找列),結果列)

他能做什麼事呢?我們看一下例子:

好像可以實現vlookup的功能,是不是很強大了。接下來我們在做幾個變種:

1)逆向查找,這是vlookup所不具備的,就是我們查找的列在後面,返回的數據在前面。

2)多條件查詢

2.1.2 語法二

=LOOKUP(lookup_value,array)

參數:

lookup_value:要查找的值。

array:要查詢的數組,並返回

這個公式依然使用二分查找法的思路,只不過功能相對於語法一遜色了不少,這個也許就是excel先前版本的公式吧。

3. VLookUp函數

=vlookup(looup_value,table_array,col_index,[range_lookup])

參數:

lookup_value:要查找的值。

table_array:要查詢的數據區域,是一個表格

col_index:返回的數據相對於匹配項的第一列

[range_lookup]:是否精確匹配。如果是0,爲精確匹配;如果是1,近似匹配,但是首列的值必須排序。也就是說,如果是近                                  似匹配,他任然和lookup一樣,採取二分查找法進行尋找匹配項。

在vlookup函數中,他的四個參數(數值1,表格1,數值2,標誌位)。我們以第一列說,河北在表格表格1查找,在第一行找到記錄,所以返回表格1的第數值2列的數據,即爲10。

如果我們現在把數據源兩列換一下位置,數值2變爲-1,因爲是在左邊,看看輸出什麼結果:

我們發現差不到信息。這也驗證了上面提到的vlookup不能逆向查詢數據。是不是感覺lookup函數的強大之處了。

我們在做一個試驗:

通過上面的可以看出,查詢的數據只對於表格第一行查詢。

關於近似匹配輸出什麼樣的結果:

我們發現和lookup的功能差不多,這裏就不多說了。

 

3. HLookUp函數

這個函數我們用的不是很多,但是作爲lookup函數的一個成員,我們簡單說一下。

首先,我們先看一下語法:

=Hlookup(looup_value,table_array,row_index_num,[range_lookup])

參數:

lookup_value:要查找的值。

table_array:要查詢的數據區域,是一個表格

row_index_num:要返回哪一行的數據

[range_lookup]:是否精確匹配。如果是0,爲精確匹配;如果是1,近似匹配,但是首列的值必須排序。也就是說,如果是近                                  似匹配,他任然和lookup一樣,採取二分查找法進行尋找匹配項。

上圖中顯示的公式是A11列的公式。這個函數是找A10的值5從A1:J1中找到匹配項,這裏找到索引位置爲5(E列),然後返回第二行所對應的數據E2(15)。

至於近似匹配和上面的公式一樣,採用二分查找法的方式實現。這裏就不舉例了,大家有興趣的可以嘗試一下。

4.總結

講到這裏,是不是感覺lookup函數家族的強大,同時是不是從此放棄vlookup函數,喜歡上lookup函數了。哈哈,其實每個函數都有他存在的必要性,雖然lookup顯得強大,但是這種複雜的語法讓人不好接受,同時vlookup可以實現爲和還要給自己找事呢,你們說對吧?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章