INDEX搭配MATCH查找資料 | 函數

2009-10-16 09:52:52


http://blog.sssh.tp.edu.tw/joviwang/1140

目的:

如果要找的資料放在另一個工作表,這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!

 

1

2

3

 

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    是個數字,其值有三種可能:-10 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 中可以包含萬用字元星號 (*) 和問號 (?)。星號可以代表任何字元順序,而問號則可代表任何單一字元。

範例

 

1

2

3

4

5

 

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及表21列皆為標題列。

已知表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

上列公式中match3個參數設0,代表要MATCH 函數找第一個完全等於 第1個參數 的比較值。