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″參見圖1Excel函數應用之查詢與引用函數

圖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為需要得到其行數的數組、數組公式或對單元格區域的引用。

以上各函數示例見圖2Excel函數應用之查詢與引用函數

圖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。

示例詳見圖3Excel函數應用之查詢與引用函數

圖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) 精確查找–根據區域最左列的值,對其它列的數據進行精確的查找

示例:創建薪水表與薪水條

首先建立員工薪水表Excel函數應用之查詢與引用函數

圖4

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

第一步,拷貝標題欄

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

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

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

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

第四步,以此類推,在隨後的單元格中寫入相應的公式。Excel函數應用之查詢與引用函數

圖5

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

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

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

圖6

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

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

即可求得具體的獎金比例為5%,如圖7。Excel函數應用之查詢與引用函數

圖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為需要進行轉置的數組或工作表中的單元格區域。所謂數組的轉置就是,將數組的第一行作為新數組的第一列,數組的第二行作為新數組的第二列,以此類推。

示例,將原來為橫向排列的業績表轉置為縱向排列。Excel函數應用之查詢與引用函數

圖8

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

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

圖9

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

第四步,由於此處是以數組公式輸入,因此需要按 CRTL+SHIFT+ENTER 組合鍵來確定為數組公式,此時會在公式中顯示”{}”。隨即轉置成功,如圖10所示。Excel函數應用之查詢與引用函數

圖10

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