2 WAYS LOOKUP

<<摘自PAN網誌>>
vlookup 和 hlookup, 這都是單向的lookup, 如要做到雙向lookup,便要利用index() 和 match()公式:-
先以index()公式去lookup 正確的位置,如我們想找 PETER + SCB的值($10,000)

INDEX(array,row_num,column_num)       即 =INDEX(C5:F9,C11,C12)
Array  -  C5:F9
Rom_num  -  PETER: 3 (第三行)
Column_num  -  SCB: 2 (第二個 column)
如何可以知道peter 和 scb 是在第幾row和column呢?借助match()公式便可以得到其正確位置(Row and Column)
MATCH(lookup_value,lookup_array,match_type)
For Row:      如 D11 =match(A11,A5:A9,0)
Lookup_Value = Peter
lookup_array = A5:A9
match_type = 0 (exact match)
For Column:     如 D12 =match(A12,C3:F3,0)
Lookup_Value = SCB
lookup_array = C3:F3
match_type = 0 (exact match)
通過match(),我們便得到 PETER  和 SCB 的傳回value (3 and 2)
最後2ways lookup 的 formula 是這樣的:
=INDEX(C5:F9,MATCH(A11,A5:A9,0),MATCH(A12,C3:F3,0))

以下為VBA FUNCTION:-

Function TwoWayLookup(Data_area, Row_value, Row_area, Column_value, Column_area)
    hello_row = Application.WorksheetFunction.Match(Row_value, Row_area, 0)
   
    hello_column = Application.WorksheetFunction.Match(Column_value, Column_area, 0)
    hello = Application.WorksheetFunction.Index(Data_area, hello_row, hello_column)
    TwoWayLookup = hello

End Function

沒有留言:

張貼留言