FILTER 函數

Applies To
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel for iPad Excel for iPhone Excel for Android tablets Excel for Android phones

FILTER 函數讓您根據自定義的準則來篩選資料範圍。

在下列範例中,我們使用公式 =FILTER (A5:D20,C5:C20=H2,“”) 傳回儲存格 H2 中所選取之 Apple 的所有記錄,如果沒有 Apple,則傳回空字串 (“”) 。

FILTER 函數 - 按照產品 (蘋果) 篩選地區

語法

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 搭配乘號運算子 (*) 以傳回 (A5:D20) 陣列範圍中,擁有 Apples AND 且在 East 區域的所有值。

FILTER 用於傳回多個準則和排序

在這個例子中,我們將使用先前的 FILTER 函數搭配 SORT 函數,以傳回陣列範圍 (A5:D20) 中具有蘋果 位於東部區域的所有值,然後以遞減順序排序單位: =SORT (FILTER (A5:D20, (C5:C20=H1) * (A5:A20=H2) ,“”) ,4,-1)

使用 FILTER 搭配 SORT 函數以傳回陣列範圍 (A5:D20) 中,擁有蘋果且在東部地區的所有值,然後按照遞減順序來排序單位。

在這個例子中,我們使用 FILTER 函數搭配加法運算子 (+) ,以傳回陣列範圍 (A5:D20) 中包含蘋果 位於東部區域的所有值,然後以遞減順序排序單位: =SORT (FILTER (A5:D20, (C5:C20=H1) + (A5:A20=H2) ,“”) ,4,-1)

合併使用 FILTER 和 SORT – 按照 Product (Apple) OR 也按照 Region (East) 篩選

請注意,因為這些函數只存在於一個儲存格,且會將它們的結果溢出至鄰近儲存格,所以都不需要絕對參照

需要更多協助嗎?

您隨時都可以詢問 Excel 技術社群 中的專家,或在 社群中取得支援。