在數據分析中,數據的查找、對比等非常常見,這就需要用到關聯匹配類函數,本文將介紹Excel數據分析中常用的關聯匹配類函數,如vlookup、hlookup、index、match及rank等。
1、vlookup
vlookup是Excel查找函數家族中最為常用的一個函數,如果你經常和Excel打交道,那麼一定使用過vlookup。
功能:用於數據區域的縱向查找。
用法:
vlookup(lookup_value,table_array,col_index_num,range_lookup)
參數說明:
第1個參數lookup_value:根據什麼查找。第2個參數table_array:在哪個數據區域中查找。第3個參數col_index_num:要查找的欄位在數據區域中的第幾列。第4個參數range_lookup:匹配類型,精確匹配還是近似匹配,如果是近似匹配,則返回小於該數值的最大數值(關於Excel中的模糊匹配後面會單獨發文)。例如,需要根據用戶編碼(用戶ID)查找用戶的其他信息,如註冊時間、年齡、性別、省份和城市等,表格名稱為「vlookup」,如下圖所示。
數據源,即查找的數據區域,在另外一個表裡,表格名稱為「用戶數據源」,如下圖所示。
如何使用vlookup查找註冊時間呢?
在表格「vlookup」中,在單元格B2中輸入公式:=VLOOKUP(A2,用戶數據源!A:F,2,0),如下圖所示。
說明:
第1個參數:A2,表示第一條記錄的用戶編碼。第2個參數:用戶數據源!A:F,代表表格「用戶數據源」中所有列,即列A至列F。第3個參數:2,表示要查找的欄位,註冊時間,在查找區域中的第2列。第4個參數:0,表示精確匹配,因為這裡是根據用戶編碼去匹配,每個用戶的用戶編碼都是唯一的,所以是精確匹配(第4個參數,輸入公式的時候會有提示,根據提示去選擇即可)。如果用vlookup可以查找年齡,公式為:=VLOOKUP(A2,用戶數據源!A:F,3,0),如下圖所示。
因為要查找的欄位「年齡」位於查找區域的第3列,所以第3個參數是3。
類似地,可以用vlookup將其餘欄位,性別、省份及城市,都查找出來,大家可以自行練習。
2、hlookup
hlookup跟vlookup類似,只是查找的數據結構有些區別。
功能:用於數據區域的橫向查找。
用法:
hlookup(lookup_value、table_array、row_index_num、[range_lookup])
參數說明:
第1個參數:lookup_value,表示根據什麼查找。第2個參數:table_array,要查找的數據區域,即在哪裡查找。第3個參數:row_index_num,要查找的欄位位於數據區域的第幾行(注意和vlookup中的列有所區別)。第4個參數:[range_lookup],匹配類型,精確匹配還是近似匹配。例如,還是之前的問題,需要根據用戶編碼(用戶ID)查找用戶的其他信息,如註冊時間、年齡、性別、省份和城市等,表格名稱為「hlookup」,如下圖所示。
這個圖中,上方區域(灰色的)表示數據源(只有兩條記錄,每一列代表一條記錄),下方區域表示要查找的區域,只有用戶編碼,其他欄位均需要根據用戶編碼查找。
說明:這裡只是為了方便講解,將這兩個區域放到了同一個表格中,實際工作中的數據一般不在同一個表格中,但hlookup的用法是一樣的。
在單元格B9中輸入公式:=HLOOKUP(B8,A1:C6,2,0),如下圖所示。
在上面的公式中,第3個參數2表示要查找的欄位「註冊時間」位於查找區域的第2行,其餘參數跟vlookup中的類似。
通過公式可以看出,hlookup和vlookup的用法是類似的,只是數據區域不同。
如果需要查找出年齡,公式為:=HLOOKUP(B8,A1:C6,3,0),這裡只是將第3個參數變成了3,因為要查找的欄位「年齡」位於查找區域的第3行,如下圖所示。
用同樣的方法可以將其餘欄位,如性別、省份及城市,均查找出來,大家可以自行練習。
3、index
功能:根據位置返回單元格的值
用法:= index(array, row_num, [column_num])
參數說明:
第1個參數:array,表示要查找的區域,即目標區域。第2個參數:row_num,通過該參數指定要查找的值位於目標區域的第幾行。第3個參數:[column_num],通過該參數指定要查找的值位於目標區域的第幾列,可預設。例如,在以下數據區域中,查找滿足要求的數據,如下圖所示。
問題1:查找排名第3的學員姓名?
在單元格E2中輸入公式:=INDEX(A2:B6,3,2),如下圖所示。
說明:我們選擇的目標區域是A2:B6,查找的目標「排名第3的學員」位於目標區域的第3行、第2列,所以index的後面兩個參數為3和2。
問題2:查找排名第3的學員成績?
在單元格E3中輸入公式:=INDEX(A2:C6,3,3),如下圖所示。
說明:我們選擇的目標區域是A2:C6,查找的目標「排名第3的學員成績」位於目標區域的第3行、第3列,所以index的後面兩個參數為3和3。
當然,對於問題2,還可以這樣寫公式:=INDEX(C2:C6,3)
因為要查找的目標「排名第3的學員成績」位於C列,所以只選擇C列,此時只需要指定第2個參數,即行的位置,由於只有一列,所以第三個參數可以直接省略。
4、match
match跟index相反,是根據值來返回位置。
功能:根據單元格的值返回位置。
用法:
= match(lookup_value, lookup_array, [match_type])
參數說明:
第1個參數:lookup_value,表示要查找的值。第2個參數:lookup_array,要查找的區域。第3個參數:[match_type],查找類型,精確匹配還是模糊匹配,跟vlookup中的模糊匹配是類似的。例如,需要查找老王的排名,可以寫公式:=MATCH("老王",B2:B6,0),如下圖所示。
說明:這裡需要查找老王的排名,其實就是根據值「老王」去查找它的位置。第1個參數為「老王」,是一個字符串,第2個參數表示姓名這個區域,第3個參數,0,表示精確匹配。
5、rank
功能:返回一列數字的排名。
用法:rank(number,ref,[order])
參數說明:
第1個參數:number,表示參加排名的數字。第2個參數:ref,表示排名的區域,即在哪個範圍中排名。第3個參數:[order],表示排名的類型,升序還是降序,0表示降序,1表示升序,默認為降序。例如,已知所有員工的銷售業績,根據員工的銷售業績給出對應的名次,如下圖所示。
這裡利用公式rank直接給出了排名,第1個參數B2表示要排序的數據,即編號為1的員工的銷售業績,第2個參數B:B表示要排序的區域B列,即所有員工的銷售業績,第3個參數0,表示進行降序排列。
總結:以上是Excel數據分析中常用的關聯匹配類函數。