VBA / 初階課程筆記-5

105.04.07 第5次上課 (範例-05尋找與參照函數練習.xls)

上課內容:

補充:名稱管理員

定義名稱,Excel中相當重要的一項功能,在很多操作中它不是必需的,但卻是高手進階的一個重要功能。它是把單元格區域、函數、常量或表格定義一個名稱,在我們一些操作,尤其是編輯Excel公式過程中,可以簡化操作,使Excel公式便於理解和維護。(原文網址:https://kknews.cc/tech/a84bvnx.html)

 

01_LOOKUP函數與查詢介面

LOOKUP 函數

向量形式的 LOOKUP 會在單列或單欄範圍 (亦稱為向量) 中尋找值,並傳回第二個單列或單欄範圍內相同位置的值。

=LOOKUP(lookup_value, lookup_vector, [result_vector])


 

應用:利用 LOOKUP函數找出查詢編號對應的資料

 

02_如何增加下拉清單(名稱與資料驗證)

建立下拉清單-資料驗證
 

應用:使用名稱管理員建立下拉式清單的資料來源

 

03_如何改用VLOOKUP查詢資料

VLOOKUP 函數

=VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

= VLOOKUP (查閱值 , 包含查閱值的範圍 , 範圍中包含傳回值的欄號 , 大約符合(TRUE)或完全符合(FALSE))

range_lookup (選填)-這是用以指定要 VLOOKUP 尋找大約符合或完全符合值的邏輯值:

1-大致相符 / TRUE   假設表格中的第一欄是以數值或字母順序排序,然後搜尋最接近的值。 預設值。

0-完全符合 / FALSE  假設表格中的第一欄是以數值或字母順序排序,然後會在第一欄中搜尋確切值。 
 

應用:找出銷量79000的提成率


 

04_改用MATCH與INDEX函數查詢資料

INDEX函數

=INDEX(array, row_num, [column_num])

=INDEX(表格範圍,列索引值,行索引值)

MATCH函數

=MATCH(lookup_value, lookup_array, [match_type])

MATCH會傳回lookup_array中相符值的位置,而不是值本身。

match_type(選填)

match_type 選擇性。 數字 -1、0 或 1。 match_type 引數會指定 Excel 如何將 lookup_value 與 lookup_array 中的值相比對。 這個引數的預設值是 1。

1 或省略:MATCH 會尋找小於或等於 lookup_value 的最大值。 lookup_array 引數內的值必須以遞增次序排列,例如:…-2,-1,0,1,2, …,A-Z,FALSE,TRUE。

0:MATCH 會尋找完全等於 lookup_value 的第一個值。 lookup_array 引數內的值可以依任意次序排列。

-1:MATCH 找出大於或等於lookup_value的最小值。 Lookup_array引數中的值必須以遞減順序放置,例如: TRUE、FALSE、Z-A, …,2、1、0、-1、-2、… 等等。
 

應用:利用INDEX函數與MATCH函數找出查詢編號對應的各項資料

Row_num:

透過 Match函數 找出查詢編號對應的列號位置

 

Column_num:

姓名的欄號為 2、總銷量的欄號為 3~~

剛好可以對應公式所在 C3 列號 3 – 1 = 2、C4 列號 4 -1 = 3 → ROW()-1


 

05_利用ROW函數取得列號、COLUMN函數取得欄號與九九乘法表

ROW函數

=ROW()    公式出現的列號

COLUMN函數

=COLUMN()    公式出現的欄號
 

應用:九九乘法表


 

06_切割名字範例與九九乘法表(範例-切割名字.xlsm),使用INDEX

=IFERROR(INDEX(名稱,COLUMN()-2+(ROW()-1)*5,1),"")

第一列:1+0*5  2+0*5 ..

第二列:1+1*5  2+1*5 ..

..

→column()-2 + (row()-1)*5
 

備註:

IFERROR函數 如果公式計算結果錯誤,IFERROR 會傳回指定的值;否則,它會傳回公式的結果。

=IFERROR(value, value_if_error)