目的:
如果要找的資料放在另一個工作表,這2個工作表如果有共同的欄位(比如這2個工作表都有學號的欄位),就可以利用這個相同欄位,查找另一個工作表上的資料,把它彙入到本工作表上的欄位中。
介紹函數:
INDEX
傳回根據指定欄列號碼所決定的表格或陣列中一個元素的值。
INDEX 函數有兩種語法形式:陣列與參照。陣列形式永遠傳回一個值或一個陣列值;而參照形式則傳回一個參照位址。當 INDEX 函數的第一個引數是陣列常數時使用陣列形式。
語法 1
陣列型式
INDEX(array,row_num,column_num)
Array 是以陣列方式輸入的儲存格範圍。
- 如果陣列只包含單一的列或欄時,則所對應的 row_num 或 column_num 是可省略的。
- 如果陣列含有多列多欄的元素,卻只單獨使用 row_num 或 column_num,則 INDEX 函數將以陣列形式傳回陣列中的某一整列或整欄元素。
Row_num 是用以指定所要傳回的元素是位於陣列裡的第幾列。如果省略了 row_num 這個引數,則一定要輸入 column_num。
Column_num 是用以指定所要傳回的元素是位於陣列裡的第幾欄。如果省略了 column_num 這個引數,則一定要輸入 row_num。
註解
- 如果同時使用了 row_num 與 column_num 引數,則 INDEX 函數傳回 row_num 與 column_num 的交叉點決定的儲存格之值。
- 如果您把 row_num (或 column_num) 設定為 0,則 INDEX 函數分別傳回整列或整欄的值的陣列。若要把所傳回的值當作陣列使用,請將 INDEX 函數以陣列方式輸入在水平的儲存格範圍中為列,輸入在垂直的儲存格範圍中為欄。若要輸入陣列公式,在 Microsoft Excel 97 for Windows 中,請按 CTRL+SHIFT+ENTER。
- Row_num 及 column_num 必須能對應到陣列中的儲存格,否則 INDEX 函數傳回錯誤值 #REF!。
|
A |
B |
資料 |
資料 |
蘋果 |
檸檬 |
香蕉 |
梨子 |
公式 |
敘述 (結果) |
=INDEX(A2:B3,2,2) |
在第二行和第二欄交叉範圍內的值 (梨子) |
=INDEX(A2:B3,2,1) |
在第二行和第一欄交叉範圍內的值 (香蕉) |
|
Index的第1個參數是查找的範圍,第2個參數是查找範圍中的列值,第3個參數是查找範圍中的欄值。如果查找範圍是在同一欄,則第第3個參數可以省略。
利用match函數會傳回1個數值,用以取代第2個參數。
MATCH
根據指定的比對方式,傳回一陣列中與搜尋值相符合之相對位置。當您需要取得符合搜尋條件的元素之相對位置而非元素本身時,您應使用 MATCH 函數,而非 LOOKUP 函數。
語法
MATCH(lookup_value,lookup_array,match_type)
Lookup_value 是您要在表格中尋找的值。
- Lookup_value 是您要在 lookup_array 中尋找比對的值。例如:當您要在電話簿中尋找某人的電話號碼時,姓名就是所要尋找比對的值,而電話號碼才是您所要的資料。
- Lookup_value 可以是數字、文字、邏輯值,或是一個參照到數字、文字、邏輯值的參照位址。
Lookup_array 是個連續的儲存格範圍,其中含有被比對值的資料。Lookup_array 必須個陣列或是個陣列參照。
Match_type 是個數字,其值有三種可能:-1、0 或 1。用以指定 Microsoft Excel 如何從 lookup_array 裡尋找 lookup_value。
- 如果 match_type 是 1,則 MATCH 函數會找到等於或僅次於 lookup_value 的值。Lookup_array 必須以遞增次序排列:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。
- 如果 match_type 是 0,則 MATCH 函數會找第一個完全等於 lookup_value 的比較值。Lookup_array 可以依任意次序排列。
- 如果 match_type 是 -1,則 MATCH 函數會找到等於或大於 lookup_value 的最小值。Lookup_array 必須以遞減次序排序:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ...,以此類推。
- 如果 match_type 引數被省略,則假設其值為 1。
註解
- MATCH 函數將傳回 lookup_array 與搜尋值相符合的相對位置,而非本身的值。例如:MATCH("b",{"a","b","c"},0) 傳回 2,其為 "b" 在陣列 {"a","b","c"} 中的位置。
- MATCH 函數在比較文字資料時,字母並不區分大小寫。
- 如果 MATCH 函數無法找到符合的元素,則傳回錯誤值 #N/A。
- 如果 match_type 為 0 而且 lookup_value 為文字,則 lookup_value 中可以包含萬用字元星號 (*) 和問號 (?)。星號可以代表任何字元順序,而問號則可代表任何單一字元。
範例
|
A |
B |
產品 |
項目個數 |
香蕉 |
25 |
柑橘 |
38 |
蘋果 |
40 |
梨子 |
41 |
公式 |
敘述 (結果) |
=MATCH(39,B2:B5,1) |
因為沒有完全符合的項目,所以會傳回範圍 B2:B5 中下一個較小的值 (38)。(2) |
=MATCH(41,B2:B5.0) |
範圍 B2:B5 中 41 的位置。(4) |
=MATCH(40,B2:B5,-1) |
因為 B2:B5 不是依遞減順序排列,所以會傳回錯誤。(#N/A) |
|
問題:
表1及表2第1列皆為標題列。
已知表1的學號(欄A),想知道相對應於學號的成績(欄B),參照資料來源為表2,表2中也學號(欄C)和成績(欄D)共有300筆資料。
解法:
表1之欄B公式設定如下:
B2
=index(表2!$D$2:$D$300,match(A2,表2!$C$2:$C$300,0))
上列公式省略index的第3個參數。因為查找範圍是在同一欄:D2:D300。
上列公式中match第3個參數設0,代表要MATCH 函數找第一個完全等於 第1個參數 的比較值。