想要把Excel的功能變得強大,函數組合使用必不可少,例如之前介紹的Offset函數,《一個強大的Excel函數OFFSET,動態選取資料範圍》,非常好用。本文介紹另外一個經常會使用到的組合拳:Address + Match + Index + Find,如果不會想被套,一定要先把套路學起來。
我們今天的練習目的很簡單,就是假設我們在資料庫裡面有很多筆資料,我們要根據關鍵字把含有關鍵字的數據列顯示出來。
組合函數,解題的難點:
1) 準備資料庫,假設ABC三列是資料庫,至於欄數可以容納999筆資料,根據實際需要可以更多。
2) 我們的練習用關鍵字搜尋資料的絕對位置,再利用位置產生相對的列的值。
F2=ADDRESS((MATCH(“*” & E2 & “*” ,A1:A999,0)),1)
因為MATCH只能返回1個值,所以我們用A欄做關鍵字的搜索。如果要搜索陣列,公式會再複雜一點,我們練習就簡單一點,
我想很多情況都足夠使用。
3) MATCH裡面的關鍵字如果不在前後加上 “*” & “*“,以”黑毛豬肋排”為例,,就只能用”黑” “黑毛” “黑毛豬”搜到結果,”肋排”搜不到。
MATCH最後的參數0是搜索結果完全符合的關鍵字的值的意思。
4)第一個難點終於出現,如何產生第二筆資料?解決方法是利用MATCH上次搜到的值改變參照位置。
F3=ADDRESS(MATCH(“*” & $E$2 & “*“, INDIRECT(“A”&(MID(F2,FIND(“$”,F2,2)+1,99999)+1)):$A$999,0)+ MID(F2,FIND(“$”,F2,2)+1,99999),1)
MATCH的參照起始位置要用到INDIRECT,將F2儲存格的變數成為參照位置,再加上一次位置,得出新的絕對位置。
用FIND計算第2個$的位置,如果直接用MID(F2,4,9999)也做到相同效果,但如果資料太多超過Z,AA欄會出現錯誤。
所以要寫成MID(F2,FIND(“$”,F2,2)+1,99999),
點擊F3角落拖下去。
5)根據關鍵字尋找到絕對位置,再用INDEX產生同列的值。
值1:
G2=INDEX($A$1:$C$999,MID(F2,FIND(“$”,F2,2)+1,99999),1)
點擊G2角落拖下去。
值2:
H2=INDEX($A$1:$C$999,MID(F2,FIND(“$”,F2,2)+1,99999),2)
點擊H2角落拖下去。
如果你的資料庫很大,只要把最開始的參照位置擴張就可以了。
取參照位置的第幾個值則是取決於Index最後的參數,第1列、第2列、第n列。
為了方便解釋,很多地方比較迂迴,例如把ADDRESS呈現出來,熟習以後能夠自行簡化,學到的才是真正屬於你的東西。