【Excel 教學】必學的查找/篩選公式 - 萬金油公式

當你要進行資料查找時,會先想到 Vlookup 或 Index + Match 等查找比對函數。
當你要進行資料篩選時,會想到「篩選功能」或 Filter 等功能及函數。
然而,目前 Filter 函數僅供「微軟 365」以及「Excel 2021」以上的版本使用,我相信很多公司的 Excel 仍然是舊版的(例如:Excel 2016、Excel 2010)

舊版 Excel 想要達成 Filter 函數的結果,就必須使用「萬金油」公式!
萬金油公式 = IFERROR + INDEX + SMALL + IF + ROW,由這 5 個函數所組成。

現在就跟著我一步步學習萬金油公式吧!

下圖是今天要做出的結果:
假設我要篩選出「分店C」的訂單資料,就可以透過「萬金油公式」來達成!

萬金油公式結果

1. 用布林值判斷是否符合「指定條件」

◾️ 布林值公式,此結果為陣列,舊版 Excel 需要按 CSE,才會產生陣列
註:CSE = Ctrl + Shift + Enter

=範圍參照=儲存格參照

◾️ 公式範例

=$C$3:$C$22=H2

2. IF + ROW 函數

接著使用 IF + ROW 函數,回傳「符合條件的列號」,此結果為陣列。

◾️ IF 函數架構
用途:判斷條件是否成立

=IF(條件判斷, 若符合則回傳XX, 若不符合則回傳OO)

◾️ ROW 函數架構
用途:回傳該範圍/儲存格的「列號」(也就是它在第幾列)

=ROW(範圍/儲存格參照)

◾️ 公式範例

=IF($C$3:$C$22=H2,ROW($C$3:$C$22))

3. SMALL + ROW 函數

接著加入 SMALL 與 ROW 函數,將「符合條件的列號」集中在最前面,此結果「非陣列」,因此需將公式下拉。

◾️ SMALL 函數架構
用途:回傳範圍內,指定第 N 小的數字

=SMALL(範圍參照, 範圍內排序第 N 小)

◾️ ROW 函數架構
用途:回傳該範圍/儲存格的「列號」(也就是它在第幾列)

=ROW(範圍/儲存格參照)

◾️ 公式範例

=SMALL(IF($C$3:$C$22=$H$2,ROW($C$3:$C$22)),ROW(A1))

注意:因為公式要下拉,因此「指定條件的參照」必須改為「絕對參照」
H2 → $H$2

4. INDEX 函數

再加入 INDEX 函數,回傳「相對應的指定欄位」的資料。

◾️ INDEX 函數架構
用途:回傳範圍內指定列號/欄號所在的資料內容

=INDEX(範圍參照, 列號, 欄號)

◾️ 公式範例

=INDEX(B:B,SMALL(IF($C$3:$C$22=$H$2,ROW($C$3:$C$22)),ROW(A1)))

注意:INDEX 的範圍參照使用「一整欄」,因為會根據「列號」回傳相對應的資料;並且使用「相對參照」,因為公式要「向右拉」。

5. IFERROR 函數

最後加入 IFERROR 函數,讓「#NUM」錯誤值消失。

Q:為什麼會有「#NUM」錯誤值呢?
A:因為篩選結果並沒有這麼多筆,後面「不符條件」的資料就會變成「#NUM」

◾️ IFERROR 函數架構
用途:將錯誤值用另一種方式呈現

=IFERROR(會產生錯誤值的公式, 當出現錯誤值則顯示XX)

◾️ 公式範例

=IFERROR(INDEX(B:B,SMALL(IF($C$3:$C$22=$H$2,ROW($C$3:$C$22)),ROW(A1))),"")

最後再把公式「向右拉」就完成囉!

6. 總結

雖然這個公式落落長,但在撰寫公式過程中,不知不覺也會學完 5 個函數!也是蠻不錯的一個挑戰喔!

但是~如果你是新版 Excel,可以使用 Filter 函數就直接使用吧!畢竟簡單又明瞭!

Subscribe to 菜鳥必修課

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe