大部分函式的引數都支援陣列寫法,這也是函式玩起來有趣的地方,VLOOKUP亦是如此,四個引數都陣列寫法!這也是我們今天“玩”起來的源頭!
駕輕就熟 | 先來個反向查詢吧!
▼反向查詢嗎?其實不然!
=VLOOKUP(D2,CHOOSE({1,2},$B$2:$B$9,$A$2:$A$9),2,0)
▼ 動畫演示
要點說明
1、雖然案例中,我們實現的效果是從右到左,看似打破了VLOOKUP只能從左到右的規則,其實不然,這裡之所以可以反向查詢,是因為我們重構了第二引數,把名稱和編碼在記憶體中換了一下位置,本質還是從左到右
2、這種反向查詢的寫法真的非常多,主題是VLOOKUP所以其他方式,我們這裡就不再一一邏輯,對這塊知識點感興趣的同學可以閱讀以下幾篇文章
擴充套件學習文章:
VLOOKUP反向查詢中的IF({1,0}是什麼意思?只會VLOOKUP?查詢方法合集!!SLOOKUP誕生-強過VLOOKUP百倍根據VLOOKUP的基本規則,VLOOKUP只能返回首個滿足條件的值,但是我們往往希望可以把滿足條件的值全部顯示出來!
略有小成 | 不是不能,只是你還不會
▼我是一條樸素的陣列公式,記得“三鍵”錄入我
=IFERROR(VLOOKUP(COLUMN(A1),IF({1,0},COUNTIF(OFFSET($A$2,,,ROW($1:$7),1),$D2),$B$2:$B$8),2,),"")
▼ 動畫演示
要點說明
1、到 略有小成 階段,我想這樣的公式對大家已經沒有什麼難度,無非是多嵌套了兩層函式,只要掌握了各基礎函式的引數和結果,基本問題不大!
2、動畫演示中,涉及到的基礎函式有IF、COLUMN、ROW、COUNTIF和OFFSET以及IFERROR,這些基礎函式都已經寫過相應的專題,感興趣的同學閱讀一下擴充套件文章即可!
IF專題 | 初級+中級+高階,變態級……ROW和COLUMN兩兄弟!函式 | COUNTIF用法大全OFFSET進階學習現在你感覺你掌握了VLOOKUP幾分?既然可以查詢全部滿足條件的,那麼LOOKUP天天搶過去幹的查詢最後一個應該問題也不大!
心領神會 | LOOKUP你也休息一下啊,我都行
▼ 動畫演示
要點說明
1、近似查詢模式下,VLOOKUP和LOOKUP、MATCH等函式一樣也是遵循“二分法”原理,關於二分原理,一言兩語講不清,所以同樣推薦大家閱讀專題文章:二分法查詢原理詳解
2、同樣我們把查詢列和結果了分開處理,然後使用IF{1,0}來重構第二引數,第四引數沒寫,也就是近似查詢!
第二引數的可塑性和可玩性真的很強很多,其他引數雖然沒有那麼可塑,但是也有一些變形玩法!
登峰造極 | 但條件是真的無趣,試試多條件吧!
▼ 動畫演示
要點說明
1、如果你新手,不知道使用多條件是可以理解的,但是當你跟別人講你精通Excel,VLOOKUP很簡單的時候,說不會多條件就說不過了!
2、這裡主要說明的是思路的突破,既然執行文字,然後多列組合後也是文字,同樣支援,但是沒人告訴你,你可能真的反應不過來!
3、同樣,第二引數依據需要重構,只是這次涉及到多重計算,符合陣列特性,所以需要“三鍵”錄入!
第三引數獲取也可以一“玩”!
返璞歸真 | 沒有匹配關係的多列結果!
要點說明
這裡其實比較簡單,也是補充一些思路問題,當然我們返回多列,但是又沒有辦法像之前一樣使用函式去匹配列的情況下,可以直接輸入常量陣列指定結果列,結果是一個區域陣列,“三鍵”錄入
出神入化 | 第一引數,也很有趣!
需求說明:多人一組,按平均值計算成績
▼有點小複雜的公式,試試庖丁解牛
=AVERAGE(VLOOKUP(T(IF({1},TRIM(MID(SUBSTITUTE(A10,"\",REPT(" ",99)),ROW(INDIRECT("1:"&(LEN(A10)-LEN(SUBSTITUTE(A10,"\",""))+1)))*99-98,99)))),$A$2:$B$7,2,))
核心要點:
1、第一引數在O365以下雖然不直接支援區域或者區域陣列,但是可以透過陣列化降維的方式來實現查詢,目前O365已經支援區域陣列,但是常量陣列是可以直接使用的普通版本中!
2、SUBSTITUTE也是拆分內容的通用套路了,應該不要我多講了,往期有專題
按分隔符拆分,這個方法真的太爽了!合同同類項的還原辦公一族必會的替換函式SUBSTITUTE學完上面上篇,我想上面的公式你也就可以解開了~
VLOOKUP還有很多細節,我們還沒有一一說全,比如第一引數不區分大小寫,第三引數特定的小數也可以,第一引數的精度高於Excel目前數值精度15位等等!
什麼叫掌握?什麼叫精通? 雖然學習了很多年,從來沒敢說“精通”或者掌握Excel,聊起來,總是說:“略懂皮毛……”,他們以為我謙遜,其實只有我自己知道,我說的是真的……!