FILTER 函數讓您根據自定義的準則來篩選資料範圍。
在以下範例中,我們使用 =FILTER (A5:D20,C5:C20=H2,) “ 來回傳 Apple 的所有記錄(如 H2 格所選),若沒有 apple,則回傳空字串 (”“) 。
語法
FILTER 函數會根據布林 (真/假) 陣列來篩選陣列。
=FILTER(array,include,[if_empty])
| 引數 | 說明 |
|---|---|
|
陣列 必要 |
要篩選的陣列或範圍 |
|
include 必要 |
布林陣列的高度或寬度必須與該陣列相同 |
|
[if_empty] 選用 |
若所包含陣列中的全部值均為空時要傳回的值 (篩選沒有傳回任何項目) |
注意
- 您可以將陣列想成是一列的值、一欄的值,或是一列值以及一欄值的組合。 在上例中,用於我們的 FILTER 公式的來源陣列是源自於範圍 A5:D20。
- FILTER 函數將傳回一個陣列,若其為公式的最終結果則會溢出。 這表示,當您按 ENTER 時,Excel 將動態建立適當大小的陣列範圍。 如果支援資料是在 Excel 表格,而您使用了結構化參照,則您從陣列範圍新增或移除資料時,陣列會自動調整大小。 如需詳細資料,請參閱溢出陣列行為。
- 如果您的資料集可能傳回空值,請使用第 3 個引數 ([if_empty])。 否則將產生 #CALC! 錯誤 ,因為 Excel 目前不支援空陣列。
- 如果 include 參數的任何值是錯誤 (#N/A、#VALUE 等 ) 或無法轉換為布林值,FILTER 函式會回傳錯誤。
- Excel 對活頁簿之間的動態陣列提供有限支援,只有同時開啟活頁簿時才支援這種情況。 如果你關閉原始碼工作簿,任何連結的動態陣列公式在重新整理時都會回傳 #REF! 錯誤 。
範例
FILTER 用於傳回多個準則
在此情況下,我們使用乘法運算子 (*) 回傳陣列範圍中所有 A5:D20) (有 蘋果且位於 東區的數值: =FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,“”) 。
FILTER 用於傳回多個準則和排序
在此案例中,我們使用先前的 FILTER 函式搭配 SORT 函數,回傳陣列 (範圍中所有 A5:D20) 中 Apple 且位於東區的值,然後依單位排序:=SORT (FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,「) ,4,-1)
在此情況下,我們使用 FILTER 函式搭配加法運算符 (+) ,回傳陣列範圍內所有 A5:D20) (有蘋果或位於東區的值,然後依單位排序:=SORT (FILTER (A5:D20, (C5:C20=H1) + (A5:A20=H2) ,「) ,4,-1)
請注意,因為這些函數只存在於一個儲存格,且會將它們的結果溢出至鄰近儲存格,所以都不需要絕對參照。
需要更多協助嗎?
你隨時可以向 Excel 技術社群 的專家詢問,或在 社群中獲得支援。