潘志剛 馬睿
遼寧廣播電視大學(xué)(沈陽 110034)
作為學(xué)校的考務(wù)工作者,在考試成績發(fā)布后還有一個(gè)查分工作,迎接對試卷成績有疑義的單位前來查閱試卷。
有時(shí)我們會碰到這樣的問題,在一張Excel表中顯示學(xué)生信息,如圖1所示:
圖1 學(xué)生信息表
想要查閱某個(gè)人的試卷,就要提前知道那個(gè)人所考科目的試卷保密號,這樣才能在堆積成山的試卷中快速查找到我們需要的試卷。試卷保密號被保存在“試卷保密號總表”中,如圖2所示:
圖2 試卷保密號總表
這個(gè)“試卷保密號總表”十分龐大,有幾萬條數(shù)據(jù),如果“學(xué)生信息表”中的數(shù)據(jù)條數(shù)少,還可以用搜索指令來查找對應(yīng)的試卷保密號,如果“學(xué)生信息表”的數(shù)據(jù)也很多,應(yīng)該如何快速得到試卷保密號呢?我們可以使用Vlookup函數(shù)來實(shí)現(xiàn)。
VLOOKUP函數(shù),它跟HLOOKUP函數(shù)和LOOKUP函數(shù)同屬于一類函數(shù),是一個(gè)縱向查找函數(shù)。HLOOKUP在工作中是按行查找的,而VLOOKUP按列查找,最終返回該列所需查詢列序所對應(yīng)的值,
VLOOKUP(lookup_value,table_array,col_index_nu m,range_lookup)
(1)col_index_num:表示的是在table_array中待返回匹配值的列序號。col_index_num顯示的數(shù)值若為x,指明的是應(yīng)返回table_array第x列的值。若col_index_num小于1,則函數(shù) VLOOKUP返回#VALUE!錯(cuò)誤值;若 col_index_num顯示數(shù)值大于table_array的列數(shù),則函數(shù) VLOOKUP返回#REF!錯(cuò)誤值。
(2)Table_array:可理解為要查找的區(qū)域所在的表,內(nèi)容為對區(qū)域(區(qū)域名稱)進(jìn)行的引用。
(3)Lookup_value:類型既可以是文本字符串,也可以是數(shù)值或者引用,它表示的是需在數(shù)據(jù)表的第一列進(jìn)行查找的數(shù)值。
(4)Range_lookup:為邏輯值,鍵入true或者不鍵入任何內(nèi)容 ,表示返回近似匹配值,意思是說,如果不能找到精確匹配值,就返回小于 lookup_value的最大數(shù)值;如果 range_lookup為 false或0,函數(shù)VLOOKUP查找的是精確匹配值,如果找不到,則返回#N/A錯(cuò)誤值。
利用以上這些基礎(chǔ)知識我們就可以解決文章開頭引言里的問題。
我們要做的是在“學(xué)生信息表”中的保密號一列輸入某種函數(shù),結(jié)合一定的條件去“試卷保密號總表”找尋結(jié)果。
具體來說,想要找到某個(gè)學(xué)生考某科的試卷保密號,我們需要知道這個(gè)學(xué)生的學(xué)號和試卷代碼,這樣的話在兩張表里都要新生成一列“學(xué)號+試卷代碼”,詳見圖3中F列:
圖3 設(shè)置“學(xué)號+試卷代碼”列后狀態(tài)
同理,在“保密號總表”中也生成“學(xué)號+試卷代碼”列,并將其移動到第一列,原因是此函數(shù)在使用時(shí),查找范圍中必須把要查找的關(guān)鍵字放于首列,操作后的狀態(tài)見圖4:
圖4 設(shè)置后的狀態(tài)
接下來,到了本文的核心內(nèi)容,使用VLOOKUP函數(shù)來查找試卷保密號,依照第2節(jié)中的公式,應(yīng)該是這樣一種邏輯:VLOOKUP(學(xué)號+試卷代碼,要查找的范圍,返回?cái)?shù)據(jù)在區(qū)域的第幾列數(shù),模糊匹配)。
其中,“學(xué)號+試卷代碼”就是我們新生成的列,要查找的范圍是“保密號總表”中的內(nèi)容,要返回的數(shù)據(jù)是試卷保密號,它在第8列,模糊匹配我們要求精確匹配,所以選用FALSE。詳細(xì)內(nèi)容見圖5中E2單元格:
圖5 公式使用
至此,我們要實(shí)現(xiàn)的功能完全實(shí)現(xiàn)了,試卷保密號可以被迅速查找到。
VLOOKUP函數(shù)的完整語法是這樣的:
VLOOKUP(lookup_value,table_array,col_index_nu m,range_lookup)
各參數(shù)的使用上有以下幾點(diǎn)需要注意:
(1)Lookup_value是個(gè)重要參數(shù),常用到的為參照地址,可為數(shù)值或文字字符串。
(2)range_lookup是邏輯值,我們一般輸入0字或False,也可輸入1字或true。前者的指完整尋找,找不到返回錯(cuò)誤值#N/A;后者指先找一模一樣的,找不到再去找接近的值,兩者都找不到返回錯(cuò)誤值#N/A。
(3)在使用該函數(shù)時(shí),lookup_value的值在table_array中必須在第一列的位置。換句話說,要搜尋的關(guān)鍵詞必須出現(xiàn)在要搜尋范圍的第一列。
(4)Table_array所表明的是搜尋范圍,col_index_num是范圍內(nèi)的欄數(shù)。Col_index_num 必須大于等于1,等于1的情況極少用到。如果出現(xiàn)錯(cuò)誤值#REF!,則可能是col_index_num的值超過范圍的總字段數(shù)。
在使用Lookup_value參數(shù)時(shí)的有三點(diǎn)注意事項(xiàng):
①在使用參照地址時(shí),有時(shí)要將lookup_value的值固定在一個(gè)格內(nèi),這里要用到“$”符號來固定,不會影響使用下拉方式(或復(fù)制)將函數(shù)添加到新的單元格中去。舉例來說,若始終想以D8的格式抓取數(shù)據(jù),可以在D8中這樣鍵入:$D$8,這樣,你進(jìn)行下拉、復(fù)制操作,函數(shù)始終會以D8的值來抓取數(shù)據(jù)。
②參照地址的單元格格式類別與要搜尋的單元格格式類別必須一致,否則即使有數(shù)據(jù)也會找不到。舉例來說,當(dāng)參照地址的值是數(shù)字,而我們要搜尋的單元格格式類別為文字時(shí),看起來雖然是一樣的數(shù)據(jù),但是就是抓不出來。
③用“&"連接若干個(gè)單元格的內(nèi)容作為查找的參數(shù)。在查找多個(gè)關(guān)鍵字的情況下可以起到事半功倍的效果。
在找不到數(shù)據(jù)時(shí)函數(shù)會傳回錯(cuò)誤值#N/A,舉例來說,如果要實(shí)現(xiàn)這樣的功能:若找到,傳回相應(yīng)的值,找不到就自動設(shè)定它的值等于0,函數(shù)如下:=if(iserror(vlookup(1,2,3,0)),0,vlookup(1,2,3,0))
在Excel 2007以上的版本中,這個(gè)公式等價(jià)于:=IFERROR(vlookup(1,2,3,0),0)。
從Excel在工作中的實(shí)例出發(fā),詳細(xì)地介紹了VLOOKUP函數(shù)使用方法及注意事項(xiàng),具有較較強(qiáng)的針對性和指導(dǎo)性。在使用Excel工作時(shí),讀者應(yīng)該靈活對待遇到的問題,有一些問題一時(shí)可能想不到用什么函數(shù)解決,應(yīng)該即時(shí)轉(zhuǎn)換思考角度,總能找到適合的函數(shù)解決待解問題。
[1]百度百科.VLOOKUP 函數(shù)[EB/OL].http://baike.baidu.com/view/3170068.htm.