查找函數上一期
説到Excel的查找函數,人們總會想起vlookup。的確,vlookup非常方便實用,一個函數就能查到想要的值。但vlookup有排序的限制,所以人們忽略了,還有一套用法更靈活的函數可以用。
MATCH
下面讓我來隆重介紹,今日的主角——MATCH函數。
在Microsoft的官網中,給MATCH下的定義是“在引用或數組中查找值”。這裏的值指的不是像vlookup函數那樣返回相應單元格的值,而是返回該值在區域中的位置。
位置的表現形式為數字,排在第一個就是1,排在第二個就是2,……第一百位就是100。我們暫時不去思考這個數字有什麼用,先看下這個函數的語法。
語法:
MATCH(lookup_value, lookup_array, [match_type])
解釋一下即:
MATCH(要查找的值, 查找的區域, 查找方式)
參數三可以是{0,1,-1}
若參數三為0,參數二可以為任何順序
若參數三為1,參數二必須為升序,參數三可忽略
若參數三為-1,參數二必須為降序
該函數可以忽略錯誤值
看起來公式比vlookup更長了,但也有相應的好處,比如無需為了查找首列而改變數據的位置,無需特地排序等。
OFFSET
OFFSET這個函數就有趣了,官方給的定義是“從給定引用中返回引用偏移量”。如果把單元格看做數學裏的數軸,那麼OFFSET就是指定座標(0,0)再按規則偏移,返回偏移的單元格。
語法:
OFFSET(reference, rows, cols, [height], [width])
解釋:
OFFSET(參照點/起點, 偏移的行, 偏移的列, [框選的行數], [框選的列數])
參數二、三可以為負數,但參數四、五必須為正
若參數四、五被省略,則寬度與高度與參數一相同
將MATCH與OFFSET組合,寫出公式:
=OFFSET($A$2,MATCH($H$4,$A$3:$A$22,0),MATCH(I$3,$B$2:$F$2,0))
OFFSET的優缺點和INDEX類似,看起來公式比vlookup更長,但也無需為了查找首列而改變數據的位置,無需特地排序。
總結
雖然可以和MATCH函數打配合的還有CHOOSE、INDIRECT等等,但個人感覺還是INDEX或OFFSET更加常用。VLOOKUP作為查找函數非常好用,但也有自身的侷限,比如只能查到第一個,無法查重名、有時還需要改變數據結構或排序等。
MATCH雖不能直接查重複項,但可以將原有的範圍減去第一個數據所在的範圍,然後再查剩下的範圍。而且不用特別關注排序問題,或者位置需不需要改動的問題,可謂更加靈活多變。
當然,函數説到底還是要解決實際問題。根據實際需求來寫函數,不同的思路可以得到不一樣的答案,這也是我列出所有解法的原因——沒有絕對正確的答案,最重要的是思路。
最後我會將這個表上傳,需要的朋友可以自取。我是小若,我們下期見。
查找函數示例鏈接提取碼: rvnr