在工作中,我們在處理大量數據時,會有這樣一種需求,即查詢某個人或某個商品的一個信息。如果我們通過滾動用肉眼去看難免非常的痛苦,畢竟數據太多,那麼聰明的人是怎麼做的呢?對,就是用vlookup函數來實現。本章就圍繞vlookup的查詢引用以及通過VBA返回多個值的方法進行講解。
01基礎知識
Vlookup函數在excel中稱之為垂直查詢函數,即在數據表中從上往下查詢滿足條件的值。
函數格式為:VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
中文說明:VLOOKUP (你想要查找的內容,要查找的單元格區域,要返回的值的區域中的列號,查找方式)。
其中具體參數說明:
你想要查找的內容(Lookup_value)是必須的參數,指的是要在表格或區域的第1列中搜索到的值。
要查找的單元格區域(table_array)是必須的參數。即要查找的數據所在的單元格區域,單元格區域的第1列中的值就是你要查找的內容要搜索的值。
要返回的值的區域中的列號(col_index_num)也是必須的參數。指的是返回數據所在的列號。列號為1時,返回單元格區域中第1 列的值;列號為2時,返回單元格區域中第2列的值,以此類推。如果列號參數小於1,則VLOOKUP返回錯誤值#VALUE!;大於單元格區域的列數,則VLOOKUP返回錯誤值#REF!
查找方式(range_lookup)為可選的參數。是一個邏輯值,取值為1/TURE或0/FALSE,指定希望VLOOKUP查找精確匹配值還是近似匹配值;如果查找方式為TRUE或被省略,則返回近似匹配值。如果找不到精確匹配值,則返回小於你想要查找的內容的最大值。如果查找方式參數為FALSE,VLOOKUP將只查找精確匹配值。如果單元格區域的第1列中有兩個或更多值與你想要查找的內容匹配,則使用第一個找到的值。如果找不到精確匹配的值,則返回錯誤值#N/A。
比如我們要查詢姓名為張山的性別就可以這樣寫:=vlookup(「張山」,A2:D6,2,1);vlookup函數就會在單元格區域中的第一列找到張山,然後去返回第二列中性別的值。到這裡vlookup查詢的理論就講完了,但是如果細心的同學會發現,我們的vlookup一次只能返回查找的一個值,如果我們要把張山的性別、學歷、是否畢業同時都查詢出來呢,這時我想很多同學都會想到,使用多個vlookup函數就可以了。但是如果要查的值很多呢?那麼多次書寫vlookup函數是不是就非常麻煩呢。好了,接下來就給大家介紹通過vlookup函數實現多列值的返回查詢。
02Vlookup函數的VBA操作
使用VBA來操作vlookup函數與在excel中一樣,即參數相同、功能相同、用法相同,但是唯一不同的是通過VBA能夠簡化VBA的書寫,同時實現更強大的功能。要通過VBA操作vlookup函數就必須得使用Application.WorksheetFunction屬性來操作excel常用函數。由於在剛才的例子中我們要查詢性別、學歷、是否畢業三個值,因此我們的vlookup函數要執行三次循環。為了簡化代碼書寫,第一步,我們先用Set Sheet1 = Application.ThisWorkbook.Worksheets("sheet1")給查詢表重命名一個變量為sheet1,然後通過sheet1去調用cells和range數據去指定查詢值單元格、查詢單元格區域以及返回數據存儲的單元格。
第二步,使用for循環去循環執行查詢,由於我們需要返回的值是3列,且是從第二列開始的,因此循環變量從2開始,循環三次結束,所以如果我麼返回的值比較多,就根據返回值的列數來控制for循環。第三步,使用Application.WorksheetFunction.VLookup(Sheet1.Cells(1, 8), Sheet1.Range("A2:D6"), i, 1)操作vlookup函數,用法和excel中一樣,照著操作即可。
代碼如下:
Private Sub CommandButton1_Click()
Dim i As Integer '定義變量
Set Sheet1 = Application.ThisWorkbook.Worksheets("sheet1") '設置工作表
For i = 2 To 4
Sheet1.Cells(i, 8) = Application.WorksheetFunction.VLookup(Sheet1.Cells(1, 8), Sheet1.Range("A2:D6"), i, 1)
'執行查詢,如果i為2,則返回第二列值,如果i為3,則返回第三列值,以此類推。
Next
End Sub
總結:vlookup函數是一個非常強大的函數,除了查詢使用,還能合併表格,多條件查詢等,因此掌握基礎用法和VBA操作excel常用函數非常重要。
相關知識閱讀:
Excel VBA操作電子表格兩大重要屬性詳解
如何通過VBA的range、cells兩大屬性操作Excel單元格詳解
Excel VBA編程中必會的三大執行語句