vlookup 和 hlookup, 這都是單向的lookup, 如要做到雙向lookup,便要利用index() 和 match()公式:-
先以index()公式去lookup 正確的位置,如我們想找 PETER + SCB的值($10,000)
INDEX(array,row_num,column_num) 即 =INDEX(C5:F9,C11,C12)如何可以知道peter 和 scb 是在第幾row和column呢?借助match()公式便可以得到其正確位置(Row and Column)
Array - C5:F9
Rom_num - PETER: 3 (第三行)
Column_num - SCB: 2 (第二個 column)
MATCH(lookup_value,lookup_array,match_type)通過match(),我們便得到 PETER 和 SCB 的傳回value (3 and 2)
For Row: 如 D11 =match(A11,A5:A9,0)
Lookup_Value = PeterFor Column: 如 D12 =match(A12,C3:F3,0)
lookup_array = A5:A9
match_type = 0 (exact match)
Lookup_Value = SCB
lookup_array = C3:F3
match_type = 0 (exact match)
最後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
沒有留言:
張貼留言