Excel函數應用之查詢與引用函數

 編者語:Excel是辦公室自動化中非常重要的一款軟件,很多巨型國際企業都是依靠Excel進行數據管理。它不僅僅能夠方便的處理表格和進行圖形分析,其更強大的功能體現在對數據的自動處理和計算,然而很多缺少理工科背景或是對Excel強大數據處理功能不瞭解的人卻難以進一步深入。編者以爲,對Excel函數應用的不瞭解正是阻擋普通用戶完全掌握Excel的攔路虎,然而目前這一部份內容的教學文章卻又很少見,所以特別組織了這一個《Excel函數應用》系列,希望能夠對Excel進階者有所幫助。《Excel函數應用》系列,將每週更新,逐步系統的介紹Excel各類函數及其應用,敬請關注!

在介紹查詢與引用函數之前,我們先來了解一下有關引用的知識。

1、引用的作用

在Excel中引用的作用在於標識工作表上的單元格或單元格區域,並指明公式中所使用的數據的位置。通過引用,可以在公式中使用工作表不同部分的數據,或者在多個公式中使用同一單元格的數值。還可以引用同一工作簿不同工作表的單元格、不同工作簿的單元格、甚至其它應用程序中的數據。

2、引用的含義

關於引用需要了解如下幾種情況的含義:

外部引用--不同工作簿中的單元格的引用稱爲外部引用。

遠程引用--引用其它程序中的數據稱爲遠程引用。

相對引用--在創建公式時,單元格或單元格區域的引用通常是相對於包含公式的單元格的相對位置。

絕對引用--如果在複製公式時不希望 Excel 調整引用,那麼請使用絕對引用。即加入美元符號,如$C$1。

3、引用的表示方法

關於引用有兩種表示的方法,即A1 和 R1C1 引用樣式。

(1)引用樣式一(默認)--A1

A1的引用樣式是Excel的默認引用類型。這種類型引用字母標誌列(從 A 到 IV ,共 256 列)和數字標誌行(從 1 到 65536)。這些字母和數字被稱爲行和列標題。如果要引用單元格,請順序輸入列字母和行數字。例如,C25 引用了列 C 和行 25 交叉處的單元格。如果要引用單元格區域,請輸入區域左上角單元格的引用、冒號(:)和區域右下角單元格的引用,如A20:C35。

(2)引用樣式二--R1C1

在 R1C1 引用樣式中,Excel 使用"R"加行數字和"C"加列數字來指示單元格的位置。例如,單元格絕對引用 R1C1 與 A1 引用樣式中的絕對引用 $A$1 等價。如果活動單元格是 A1,則單元格相對引用 R[1]C[1] 將引用下面一行和右邊一列的單元格,或是 B2。

在瞭解了引用的概念後,我們來看看Excel提供的查詢與引用函數。查詢與引用函數可以用來在數據清單或表格中查找特定數值,或者需要查找某一單元格的引用。Excel中一共提供了ADDRESS、AREAS、CHOOSE、COLUMN、COLUMNS、HLOOKUP、HYPERLINK、INDEX、INDIRECT、LOOKUP、MATCH、OFFSET、ROW、ROWS、TRANSPOSE、VLOOKUP 16個查詢與引用函數。下面,筆者將分組介紹一下這些函數的使用方法及簡單應用。

一、ADDRESS、COLUMN、ROW

1、 ADDRESS用於按照給定的行號和列標,建立文本類型的單元格地址。

其語法形式爲:ADDRESS(row_num,column_num,abs_num,a1,sheet_text)

Row_num指在單元格引用中使用的行號。

Column_num指在單元格引用中使用的列標。

Abs_num 指明返回的引用類型,1代表絕對引用,2代表絕對行號,相對列標,3代表相對行號,絕對列標,4爲相對引用。

A1用以指明 A1 或 R1C1 引用樣式的邏輯值。如果 A1 爲 TRUE 或省略,函數 ADDRESS 返回 A1 樣式的引用;如果 A1 爲 FALSE,函數 ADDRESS 返回 R1C1 樣式的引用。

Sheet_text爲一文本,指明作爲外部引用的工作表的名稱,如果省略 sheet_text,則不使用任何工作表名。

簡單說,即ADDRESS(行號,列標,引用類型,引用樣式,工作表名稱)

比如,ADDRESS(4,5,1,FALSE,"[Book1]Sheet1") 等於 "[Book1]Sheet1!R4C5"參見圖1

 
圖1

2、 COLUMN用於返回給定引用的列標。

語法形式爲:COLUMN(reference)

Reference爲需要得到其列標的單元格或單元格區域。如果省略 reference,則假定爲是對函數 COLUMN 所在單元格的引用。如果 reference 爲一個單元格區域,並且函數 COLUMN 作爲水平數組輸入,則函數 COLUMN 將 reference 中的列標以水平數組的形式返回。但是Reference 不能引用多個區域。

3、 ROW用於返回給定引用的行號。

語法形式爲:ROW(reference)

Reference爲需要得到其行號的單元格或單元格區域。 如果省略 reference,則假定是對函數 ROW 所在單元格的引用。如果 reference 爲一個單元格區域,並且函數 ROW 作爲垂直數組輸入,則函數 ROW 將 reference 的行號以垂直數組的形式返回。但是Reference 不能對多個區域進行引用。

二、AREAS、COLUMNS、INDEX、ROWS

1、 AREAS用於返回引用中包含的區域個數。其中區域表示連續的單元格組或某個單元格。

其語法形式爲AREAS(reference)

Reference爲對某一單元格或單元格區域的引用,也可以引用多個區域。如果需要將幾個引用指定爲一個參數,則必須用括號括起來。

2、 COLUMNS用於返回數組或引用的列數。

其語法形式爲COLUMNS(array)

Array爲需要得到其列數的數組、數組公式或對單元格區域的引用。

3、 ROWS用於返回引用或數組的行數。

其語法形式爲ROWS(array)

Array爲需要得到其行數的數組、數組公式或對單元格區域的引用。

以上各函數示例見圖2

 
圖2

4、 INDEX用於返回表格或區域中的數值或對數值的引用。

函數 INDEX() 有兩種形式:數組和引用。數組形式通常返回數值或數值數組;引用形式通常返回引用。

(1)INDEX(array,row_num,column_num) 返回數組中指定單元格或單元格數組的數值。

Array爲單元格區域或數組常數。Row_num爲數組中某行的行序號,函數從該行返回數值。Column_num爲數組中某列的列序號,函數從該列返回數值。需注意的是Row_num 和 column_num 必須指向 array 中的某一單元格,否則,函數 INDEX 返回錯誤值 #REF!。

(2)INDEX(reference,row_num,column_num,area_num) 返回引用中指定單元格或單元格區域的引用。

Reference爲對一個或多個單元格區域的引用。

Row_num爲引用中某行的行序號,函數從該行返回一個引用。

Column_num爲引用中某列的列序號,函數從該列返回一個引用。

需注意的是Row_num、column_num 和 area_num 必須指向 reference 中的單元格;否則,函數 INDEX 返回錯誤值 #REF!。如果省略 row_num 和 column_num,函數 INDEX 返回由 area_num 所指定的區域。

三、INDIRECT、OFFSET

1、 INDIRECT用於返回由文字串指定的引用。

當需要更改公式中單元格的引用,而不更改公式本身,使用函數 INDIRECT。

其語法形式爲:INDIRECT(ref_text,a1)

其中Ref_text爲對單元格的引用,此單元格可以包含 A1-樣式的引用、R1C1-樣式的引用、定義爲引用的名稱或對文字串單元格的引用。如果 ref_text 不是合法的單元格的引用,函數 INDIRECT 返回錯誤值 #REF!。

A1爲一邏輯值,指明包含在單元格 ref_text 中的引用的類型。如果 a1 爲 TRUE 或省略,ref_text 被解釋爲 A1-樣式的引用。如果 a1 爲 FALSE,ref_text 被解釋爲 R1C1-樣式的引用。

需要注意的是:如果 ref_text 是對另一個工作簿的引用(外部引用),則那個工作簿必須被打開。如果源工作簿沒有打開,函數 INDIRECT 返回錯誤值 #REF!。

2、 OFFSET函數用於以指定的引用爲參照系,通過給定偏移量得到新的引用。

返回的引用可以是一個單元格或者單元格區域,並可以指定返回的行數或者列數。

其基本語法形式爲:OFFSET(reference, rows, cols, height, width)。

其中,reference變量作爲偏移量參照系的引用區域(reference必須爲對單元格或相連單元格區域的引用,否則,OFFSET函數返回錯誤值#VALUE!)。

rows變量表示相對於偏移量參照系的左上角單元格向上(向下)偏移的行數(例如rows使用2作爲參數,表示目標引用區域的左上角單元格比reference低2行),行數可爲正數(代表在起始引用單元格的下方)或者負數(代表在起始引用單元格的上方)或者0(代表起始引用單元格)。

cols表示相對於偏移量參照系的左上角單元格向左(向右)偏移的列數(例如cols使用4作爲參數,表示目標引用區域的左上角單元格比reference右移4列),列數可爲正數(代表在起始引用單元格的右邊)或者負數(代表在起始引用單元格的左邊)。

如果行數或者列數偏移量超出工作表邊緣,OFFSET函數將返回錯誤值#REF!。height變量表示高度,即所要返回的引用區域的行數(height必須爲正數)。width變量表示寬度,即所要返回的引用區域的列數(width必須爲正數)。如果省略height或者width,則假設其高度或者寬度與reference相同。例如,公式OFFSET(A1,2,3,4,5)表示比單元格A1靠下2行並靠右3列的4行5列的區域(即D3:H7區域)。

由此可見,OFFSET函數實際上並不移動任何單元格或者更改選定區域,它只是返回一個引用。

四、HLOOKUP、LOOKUP、MATCH、VLOOKUP

1、 LOOKUP函數與MATCH函數

LOOKUP函數可以返回向量(單行區域或單列區域)或數組中的數值。此係列函數用於在表格或數值數組的首行查找指定的數值,並由此返回表格或數組當前列中指定行處的數值。當比較值位於數據表的首行,並且要查找下面給定行中的數據時,使用函數 HLOOKUP。當比較值位於要進行數據查找的左邊一列時,使用函數 VLOOKUP。

如果需要找出匹配元素的位置而不是匹配元素本身,則應該使用函數 MATCH 而不是函數 LOOKUP。MATCH函數用來返回在指定方式下與指定數值匹配的數組中元素的相應位置。從以上分析可知,查找函數的功能,一是按搜索條件,返回被搜索區域內數據的一個數據值;二是按搜索條件,返回被搜索區域內某一數據所在的位置值。利用這兩大功能,不僅能實現數據的查詢,而且也能解決如"定級"之類的實際問題。

2、 LOOKUP用於返回向量(單行區域或單列區域)或數組中的數值。

函數 LOOKUP 有兩種語法形式:向量和數組。

(1) 向量形式

函數 LOOKUP 的向量形式是在單行區域或單列區域(向量)中查找數值,然後返回第二個單行區域或單列區域中相同位置的數值。

其基本語法形式爲LOOKUP(lookup_value,lookup_vector,result_vector)

Lookup_value爲函數 LOOKUP 在第一個向量中所要查找的數值。Lookup_value 可以爲數字、文本、邏輯值或包含數值的名稱或引用。

Lookup_vector爲只包含一行或一列的區域。Lookup_vector 的數值可以爲文本、數字或邏輯值。

需要注意的是Lookup_vector 的數值必須按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否則,函數 LOOKUP 不能返回正確的結果。文本不區分大小寫。

Result_vector 只包含一行或一列的區域,其大小必須與 lookup_vector 相同。

如果函數 LOOKUP 找不到 lookup_value,則查找 lookup_vector 中小於或等於 lookup_value 的最大數值。

如果 lookup_value 小於 lookup_vector 中的最小值,函數 LOOKUP 返回錯誤值 #N/A。

示例詳見圖3

 
圖3

(2) 數組形式

函數 LOOKUP 的數組形式在數組的第一行或第一列查找指定的數值,然後返回數組的最後一行或最後一列中相同位置的數值。通常情況下,最好使用函數 HLOOKUP 或函數 VLOOKUP 來替代函數 LOOKUP 的數組形式。函數 LOOKUP 的這種形式主要用於與其他電子表格兼容。關於LOOKUP的數組形式的用法在此不再贅述,感興趣的可以參看Excel的幫助。

3、 HLOOKUP與VLOOKUP

HLOOKUP用於在表格或數值數組的首行查找指定的數值,並由此返回表格或數組當前列中指定行處的數值。

VLOOKUP用於在表格或數值數組的首列查找指定的數值,並由此返回表格或數組當前行中指定列處的數值。

當比較值位於數據表的首行,並且要查找下面給定行中的數據時,請使用函數 HLOOKUP。

當比較值位於要進行數據查找的左邊一列時,請使用函數 VLOOKUP。

語法形式爲:

HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

其中,Lookup_value表示要查找的值,它必須位於自定義查找區域的最左列。Lookup_value 可以爲數值、引用或文字串。

Table_array查找的區域,用於查找數據的區域,上面的查找值必須位於這個區域的最左列。可以使用對區域或區域名稱的引用。

Row_index_num爲 table_array 中待返回的匹配值的行序號。Row_index_num 爲 1 時,返回 table_array 第一行的數值,row_index_num 爲 2 時,返回 table_array 第二行的數值,以此類推。

Col_index_num爲相對列號。最左列爲1,其右邊一列爲2,依此類推.

Range_lookup爲一邏輯值,指明函數 HLOOKUP 查找時是精確匹配,還是近似匹配。

下面詳細介紹一下VLOOKUP函數的應用。

簡言之,VLOOKUP函數可以根據搜索區域內最左列的值,去查找區域內其它列的數據,並返回該列的數據,對於字母來說,搜索時不分大小寫。所以,函數VLOOKUP的查找可以達到兩種目的:一是精確的查找。二是近似的查找。下面分別說明。

(1) 精確查找--根據區域最左列的值,對其它列的數據進行精確的查找

示例:創建工資表與工資條

首先建立員工工資表

 
圖4

然後,根據工資表創建各個員工的工資條,此工資條爲應用Vlookup函數建立。以員工Sandy(編號A001)的工資條創建爲例說明。

第一步,拷貝標題欄

第二步,在編號處(A21)寫入A001

第三步,在姓名(B21)創建公式

=VLOOKUP($A21,$A$3:$H$12,2,FALSE)

語法解釋:在$A$3:$H$12範圍內(即工資表中)精確找出與A21單元格相符的行,並將該行中第二列的內容計入單元格中。

第四步,以此類推,在隨後的單元格中寫入相應的公式。

 
圖5

(2) 近似的查找--根據定義區域最左列的值,對其它列數據進行不精確值的查找

示例:按照項目總額不同提取相應比例的獎金

第一步,建立一個項目總額與獎金比例的對照表,如圖6所示。項目總額的數字均爲大於情況。即項目總額在0~5000元時,獎金比例爲1%,以此類推。

 
圖6

第二步 假定某項目的項目總額爲13000元,在B11格中輸入公式

=VLOOKUP(A11,$A$4:$B$8,2,TRUE)

即可求得具體的獎金比例爲5%,如圖7。

 
圖7

4、 MATCH函數

MATCH函數有兩方面的功能,兩種操作都返回一個位置值。

一是確定區域中的一個值在一列中的準確位置,這種精確的查詢與列表是否排序無關。

二是確定一個給定值位於已排序列表中的位置,這不需要準確的匹配.

語法結構爲:MATCH(lookup_value,lookup_array,match_type) 

lookup_value爲要搜索的值。

lookup_array:要查找的區域(必須是一行或一列)。

match_type:匹配形式,有0、1和-1三種選擇:"0"表示一個準確的搜索。"1"表示搜索小於或等於查換值的最大值,查找區域必須爲升序排列。"-1"表示搜索大於或等於查找值的最小值,查找區域必須降序排開。以上的搜索,如果沒有匹配值,則返回#N/A。

五、HYPERLINK

所謂HYPERLINK,也就是創建快捷方式,以打開文檔或網絡驅動器,甚至INTERNET地址。通俗地講,就是在某個單元格中輸入此函數之後,可以到您想去的任何位置。在某個Excel文檔中,也許您需要引用別的Excel文檔或Word文檔等等,其步驟和方法是這樣的:

  (1)選中您要輸入此函數的單元格,比如B6。

  (2)單擊常用工具欄中的"粘貼函數"圖標,將出現"粘貼函數"對話框,在"函數分類"框中選擇"常用",在"函數名"框中選擇HYPERLINK,此時在對話框的底部將出現該函數的簡短解釋。

  (3)單擊"確定"後將彈出HYPERLINK函數參數設置對話框。

  (4)在"Link_location"中鍵入要鏈接的文件或INTERNET地址,比如:"c:/my documents/Excel函數.doc";在"Friendly_name"中鍵入"Excel函數"(這裏是假設我們要打開的文檔位於c:/my documents下的文件"Excel函數.doc")。

(5)單擊"確定"回到您正編輯的Excel文檔,此時再單擊B6單元格就可立即打開用Word編輯的會議紀要文檔。

HYPERLINK函數用於創建各種快捷方式,比如打開文檔或網絡驅動器,跳轉到某個網址等。說得誇大一點,在某個單元格中輸入此函數之後,可以跳到我們想去的任何位置。   

六、其他(CHOOSE、TRANSPOSE)

1、CHOOSE函數

函數CHOOSE可以使用 index_num 返回數值參數清單中的數值。使用函數 CHOOSE 可以基於索引號返回多達 29 個待選數值中的任一數值。

語法形式爲:CHOOSE(index_num,value1,value2,...)

Index_num用以指明待選參數序號的參數值。Index_num 必須爲 1 到 29 之間的數字、或者是包含數字 1 到 29 的公式或單元格引用。

Value1,value2,... 爲 1 到 29 個數值參數,函數 CHOOSE 基於 index_num,從中選擇一個數值或執行相應的操作。參數可以爲數字、單元格引用,已定義的名稱、公式、函數或文本。

2、TRANSPOSE函數

TRANSPOSE用於返回區域的轉置。函數 TRANSPOSE 必須在某個區域中以數組公式的形式輸入,該區域的行數和列數分別與 array 的列數和行數相同。使用函數 TRANSPOSE 可以改變工作表或宏表中數組的垂直或水平走向。

語法形式爲TRANSPOSE(array)

Array爲需要進行轉置的數組或工作表中的單元格區域。所謂數組的轉置就是,將數組的第一行作爲新數組的第一列,數組的第二行作爲新數組的第二列,以此類推。

示例,將原來爲橫向排列的業績錶轉置爲縱向排列。

 
圖8

第一步,由於需要轉置的爲多個單元格形式,因此需要以數組公式的方法輸入公式。故首先選定需轉置的範圍。此處我們設定轉置後存放的範圍爲A9.B14.

第二步,單擊常用工具欄中的"粘貼函數"圖標,將出現"粘貼函數"對話框,在"函數分類"框中選擇"查找與引用函數"框中選擇TRANSPOSE,此時在對話框的底部將出現該函數的簡短解釋。 單擊"確定"後將彈出TRANSPOSE函數參數設置對話框。

 
圖9

第三步,選擇數組的範圍即A2.F3

第四步,由於此處是以數組公式輸入,因此需要按 CRTL+SHIFT+ENTER 組合鍵來確定爲數組公式,此時會在公式中顯示"{}"。隨即轉置成功,如圖10所示。

 
圖10

以上我們介紹了Excel的查找與引用函數,此類函數的靈活應用對於減少重複數據的錄入是大有裨益的。此處只做了些拋磚引玉的示例,相信大家會在實際運用中想出更具實用性的應用方法。

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