(聲明:本篇文章是為了做實驗,而由 ChatGPT Agent自動產生,AI產生的文章對你仍會有幫助?)
📂 Excel FILTER 函數與 UNIQUE 函數的綜合運用
當您在 Excel 中處理大量資料時,常常希望能快速從鬱雜的資料集中篩選出符合條件的資料,或者取得唯一不重複的列表。傳統上,我們會利用條件篩選或進階篩選功能,但這些操作需要大量的手動調整,效率不高。自從 Office 365 提出動態陣列(Dynamic Arrays)之後,Excel 提供了更多強大的函數讓我們能用公式輕鬆完成過去複雜的操作。文章將透過圖示、表格和實例,深入介紹兩個重要的動態陣列函數——FILTER 與 UNIQUE——並示範如何將兩者結合,進而解決實務工作中常見的資料分析需求。
在開始之前,先為大家準備一個視覺化的小圖示,幫助大家理解這些函數如何在工作表中運作:
🔍 FILTER 函數介紹
FILTER 函數可以根據指定的條件從資料陣列中篩選出符合條件的資料列或資料行。與傳統的篩選工具不同,FILTER 函數是一個公式,因此可以動態更新結果。當原始資料有新增或修改時,公式結果會自動反映最新的狀況,使用起來方便又可靠。
FILTER 函數的語法如下:
=FILTER(array, include, [if_empty])
其中 array 為欲篩選的資料範圍;include 為布枕條件陣列,決定哪些列要被篩選;[if_empty] 則為可選的參數,用來指定如果沒有符合條件的資料時要顯示的訊息。為了讓您更容易記住這些參數,我整理了以下表格:
| 參數 | 說明 |
|---|---|
array |
要進行篩選的資料範圍,可以是單一行、單一列或矩阵。 |
include |
邏輯條件範圍,其長度需與 array 的相對列或欄對應。條件結果需為 TRUE 或 FALSE。 |
[if_empty] |
當篩選結果為空集合時要顯示的訊息,如輸入「查無資料」等文字提示。 |
由於 FILTER 可以自由搭配各種條件範圍,我們可以建立複雜的篩選條件。例如,可使用運算子比較某一欄位是否大於某數、是否包含特定文字,甚至可以利用 AND/OR 條件組合多個判斷式。這讓我們能夠在不寫 VBA 程式碼的情況下,建構強大的資料查詢機制。
🌟 UNIQUE 函數介紹
UNIQUE 函數則是用來從資料集合中取得不重複的值。當您有一大堆資料,其中包含重複的項目時,UNIQUE 可以快速生成唯一值清單,而無需手動移除重複項目或依序排序。
UNIQUE 函數的語法為:
=UNIQUE(array, [by_col], [exactly_once])
其中 array 是要取得唯一值的資料範圍;[by_col] 控制要以列還是以欄的方式取得唯一值;[exactly_once] 則讓您可以指定是否只返回在原始資料中只出現一次的值。以下表格總約這些參數的用途:
| 參數 | 說明 |
|---|---|
array |
欲取得唯一值的資料範圍。 |
[by_col] |
可選參數,預設為 FALSE(0),表示以列為單位取得唯一值;如果設為 TRUE(1),則改以欄為單位尋找唯一值。 |
[exactly_once] |
可選參數,預設為 FALSE(0),表示會傳回所有不同值;如果設為 TRUE(1),則僅僅傳回在 array 中出現一次的值,會自動排除重複。 |
由於 UNIQUE 也是動態陣列函數,只要原始資料更新,產生的唯一清單也會同步更新,這對於建立清晰的資料摘要非常有幫助。您可以將其運用在生成下抽選單、分析群組類型等場景。
📊 實例:使用 FILTER 篩選資料
接下來讓我們透過實際案例來驗味 FILTER 的魅力。假設我們有一份學生成績表,如下所示:
| 學號 | 姓名 | 科系 | 成績 |
|---|---|---|---|
| A001 | 陳小芳 | 資訊工程系 | 88 |
| A002 | 林建宇 | 電機工程系 | 92 |
| A003 | 張雅婷 | 資訊工程系 | 75 |
| A004 | 劉威成 | 資訊工程系 | 64 |
| A005 | 邱思琪 | 電機工程系 | 81 |
如果我們希望篩選出「資訊工程系」中成績大於等於 80 分的學生,可以利用下列公式:
=FILTER(A2:D6, (C2:C6="資訊工程系") * (D2:D6>=80), "查無符合條件的學生")
在上述公式中,條件 (C2:C6="資訊工程系") 判斷科系是否為資訊工程系,條件 (D2:D6>=80) 判斷成績是否達 80 分以上;兩個條件相乘代表邏輯 AND 的意思。若沒有學生同時符合這兩個條件,公式會顯示「查無符合條件的學生」。輸入公式後,Excel 會自動產出一個符合條件的資料表,包含學號、姓名、科系、成績四個欄位,且會根據原始資料變動而自動更新。
👋 實例:使用 UNIQUE 取得不重複的科系
除了篩選資料外,我們常常需要取得唯一的分類值。例如在上述例子中,我們想知道成績表中有哪些不同的科系,可用 UNIQUE 函數簡單完成:
=UNIQUE(C2:C6)
公式會傳回「資訊工程系」與「電機工程系」兩個科系。如果我們希望依照出現的順序列出,而且只返回每個科系中只出現一次的值,可以使用:
=UNIQUE(C2:C6,,TRUE)
然而,在本案例中各科系皆至少出現兩次,因此第二個參數的影響不大。UNIQUE 的強大在於它不需要搭配其他函數即可完成找出唯一值的工作,這在需要建立有效清單或群組資料時格外便利。
🔗 綜合應用:FILTER 結合 UNIQUE
真正令人興奮的是 FILTER 與 UNIQUE 可以搭配使用,在多條件篩選後再取得唯一值。例如我們想知道「資訊工程系」學生中,成績 80 分以上的學生有哪些不同的科系(雖然範例中可能只有資訊工程系一個,但在現實案例中可能同一個條件篩選後會有多個科系重複出現)。可以利用下列公式:
=UNIQUE(FILTER(C2:C6, (C2:C6="資訊工程系") * (D2:D6>=80)))
此公式首先通過 FILTER 篩選出「資訊工程系」且成績 80 分以上的資料,再將篩選結果傳入 UNIQUE 取得不重複的科系。這樣一來,即使資料表中的科系眾多且有重複,最終得到的結果仍然是唯一值清單。因為兩者皆支援動態陣列,使用者不需要之前知道結果的列數,Excel 會自動在工作表上擴展出需要的記錄格。
我們可以將這個概念延伸到更多應用。例如分析銷售資料時,先用 FILTER 按日期、區域或產品類別篩選記錄,再用 UNIQUE 取得獨立的客戶名單,進一步交叉比對或製作查表分析。當資料規模變大時,傳統函數如 VLOOKUP 或 INDEX/MATCH 可能需要複雜的計算,但使用動態陣列函數則變得簡單、直观。
💡 使用技巧與注意事項
- 在設定 FILTER 的
include條件時,可利用運算子(如 =、>=、<=)結合邏輯運算(如 + 或 *)表示 OR 與 AND。請注意括號的使用,以避免錯誤。 - 如果篩選結果可能為空值,建議使用
[if_empty]參數告知使用者,例如顯示「無資料」,避免出現錯訊。 - 當資料範圍包含標題列時,記得調整
array的起始列,以免標題也被當成資料篩選。 - UNIQUE 函數預設會忽略空儲存格,但如果您想取得所有非重複且非空的值,請先使用其他函數(如 FILTER)排除空值。
- 如需對篩選結果進行排序,可搭配 SORT 函數,例如
=SORT(UNIQUE(...))以升序或降序排列唯一值。
📈 延伸應用與心得
透過上述實例可知,FILTER 與 UNIQUE 是 Excel 中非常実用的動態陣列函數,它們可以大從簡化資料處理流程。尤其在需要即時報表、即時篩選及統合獨特值的場景中,這兩個函數的結合使工作效率顯著提升。下面列出一些延伸應用供讀者參考:
- 建立動態下抽選單:先用 UNIQUE 取得清單,再套用 Data Validation 作為下抽選單來源,能讓清單自動隨資料更新。
- 同場加映:配合 FILTER 及 UNIQUE 製作動態儀表板,例如在篩選後立即更新圖表或指樣。
- 分析訂單資料:使用 FILTER 按日期、區域篩選訂單,再用 UNIQUE 取得客戶名單,最後通過 COUNTIF 算出客戶購買次數。
- 教育訓練:在教學請義中示範如何使用動態陣列函數,可以幫助學生理解現代 Excel 的強大之處。
總約來說,FILTER 和 UNIQUE 允許我們以直观的方式組合條件篩選與去除重複,無論是處理學生成績、銷售報表還是問卷結果,都能用簡潔的公式達到以往需複雜步驟才能完成的工作。建議大家在使用這些函數時,多嘗試不同的條件組合,並注意公式所處的工作表結構,才能真正發揮 Excel 動態陣列的威力。
透過不斷練習,相信您很快就能在實務工作中熟悉 FILTER 與 UNIQUE 的運用,並利用它們提升效率,打造更精準、更高效的資料分析流程。
