KutoolsforOffice — 一套方案,五大工具。事半功倍。3 月特賣:20% 折扣

統計區域中唯一值的個數(在 Excel 中依條件)

作者Siluvia修改日期

若要根據另一欄中的指定條件僅計算唯一值,您可以使用由 SUM、FREQUENCY、MATCH 與 ROW 函數組成的陣列公式。本逐步指南將協助您輕鬆掌握此公式最棘手的用法。

doc-count-unique-with-criteria-1


如何在 Excel 中根據條件統計區域內唯一值的個數?

如下方產品表格所示,商店 A 在不同日期銷售了部分重複的產品。若想取得該商店所銷售產品的唯一計數,可套用以下公式。

doc-count-unique-with-criteria-2

通用公式

{=SUM(--(FREQUENCY(IF(range=criteria,MATCH(vals,vals,0)),ROW(vals)-ROW(vals.firstcell)+1)>0))}

引數

Range(範圍):包含與條件比對之值的儲存格範圍;
Criteria(條件):您要據以統計區域中唯一值的個數的條件;
Vals(值):您要從中統計區域中唯一值的個數的儲存格範圍;
Vals.firstcell(值的第一個儲存格):您要從中統計區域中唯一值的個數之範圍的第一個儲存格。

注意:此公式必須以陣列公式方式輸入。套用後,若公式外圍出現大括號,即表示已成功建立陣列公式。

如何運用這些公式?

1. 選取一個空白儲存格來放置結果。

2. 將下方公式輸入其中,然後同時按下 Ctrl+Shift+Enter 鍵,立即取得結果!

=SUM(--(FREQUENCY(IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)),ROW(D3:D16)-ROW(D3)+1)>0))

doc-count-unique-with-criteria-3

注意事項:在此公式中,E3:E16 為用來與條件比對的值範圍,H3 為條件所在儲存格,D3:D16 是您要計算唯一值的範圍,而 D3 則是 D3:D16 的第一個儲存格。您可以根據需求調整這些參照。

這個公式是如何運作的?

{=SUM(--(FREQUENCY(IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)),ROW(D3:D16)-ROW(D3)+1)>0))}

  • IF(E3:E16=H3,MATCH(D3:D16,D3:D16,0)):
1)E3:E16=H3:此處檢查值 A 是否存在於範圍 E3:E16 中,若找到則傳回 TRUE,否則傳回 FALSE。您將獲得類似這樣的陣列:{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;}。
2)MATCH(D3:D16,D3:D16,0):MATCH 函數會取得範圍 D3:D16 中每個項目的首次出現位置,並傳回類似這樣的陣列:{1;2;3;2;1;1;3;2;1;1;1;2;3;2}。
  • IF({TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;},{1;2;3;2;1;1;3;2;1;1;1;2;3;2}):現在,針對陣列 1 中的每個 TRUE 值,我們會取出其在陣列 2 中對應位置的數值;若為 FALSE,則傳回 FALSE。您將獲得一個新陣列:{1;FALSE;FALSE;2;FALSE;FALSE;3;FALSE;FALSE;1;FALSE;FALSE;3;FALSE}。
  • ROW(D3:D16)-ROW(D3)+1:此處 ROW 函數會傳回參照 D3:D16 與 D3 的列號,結果為 {3;4;5;6;7;8;9;10;11;12;13;14;15;16}-{3}+1.
  • 將陣列中的每個數字先減去 3,再加 1,最終結果為 {1;2;3;4;5;6;7;8;9;10;11;12;13;14}。
  • FREQUENCY({1;FALSE;FALSE;2;FALSE;FALSE;3;FALSE;FALSE;1;FALSE;FALSE;3;FALSE},{1;2;3;4;5;6;7;8;9;10;11;12;13;14}):此處 FREQUENCY 函數會傳回指定陣列中各數值的出現頻率:{2;1;2;0;0;0;0;0;0;0;0;0;0;0}。
  • =SUM(--({2;1;2;0;0;0;0;0;0;0;0;0;0;0}>0)):
1){2;1;2;0;0;0;0;0;0;0;0;0;0;0}>0:陣列中的每個數字與 0 比較,若大於 0 則傳回 TRUE,否則傳回 FALSE。您將獲得類似這樣的 TRUE/FALSE 陣列:{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE};
2)--{TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}:這兩個負號會將「TRUE」轉換為 1,並將「FALSE」轉換為 0. 您將獲得一個新陣列:{1;1;1;0;0;0;0;0;0;0;0;0;0;0}。
3)SUM{1;1;1;0;0;0;0;0;0;0;0;0;0;0}:SUM 函數會加總陣列中的所有數字,並傳回最終結果 3.

相關函數

Excel SUM 函數
Excel SUM 函數用於加總數值

Excel FREQUENCY 函數
Excel FREQUENCY 函數可用來計算數值在特定範圍內的出現頻率,並傳回一個垂直陣列。

Excel IF 函數
Excel IF 函數可執行簡單的邏輯測試,並根據比較結果傳回不同值:若結果為 TRUE,則傳回指定值;若為 FALSE,則傳回另一個值。

Excel MATCH 函數
Excel MATCH 函數會在指定的儲存格範圍中搜尋特定值,並傳回該值的相對位置。

Excel ROW 函數
Excel ROW 函數可傳回指定參照的列號。


相關公式

計算篩選清單中的可見列數
本教學將教您如何在 Excel 中運用 SUBTOTAL 函數,輕鬆計算篩選清單中的可見列數!

統計區域中唯一值的個數(在範圍內)
本教學將教您如何在 Excel 中運用指定公式,快速計算清單中重複項目裡的唯一值數量!

依條件計算可見列數
本教學提供詳細步驟,助您輕鬆掌握如何依條件計算可見列數!

在非連續範圍上使用 COUNTIF
本逐步指南將示範如何在 Excel 的非連續範圍中靈活運用 COUNTIF 函數,輕鬆掌握進階統計技巧!


最佳 Office 生產力工具

Kutools for Excel -助您脫穎而出

🤖KUTOOLS AI 助手:以以下方式革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、標示或標記重複值    刪除空白行    合併列或儲存格而不遺失資料    不使用公式的四捨五入……
超級 VLookup多重條件    多重值    跨多個工作表    模糊查找……
進階下拉列表簡易下拉式清單    相依下拉式清單    多選下拉式清單……
欄位管理員新增指定數量的欄位    移動欄位   切換隱藏欄位的可見狀態  比較欄位以選擇相同/不同單元格……
精選功能網格聚焦    設計視圖    增強編輯欄    工作簿與工作表管理員資源庫(自動文字)  日期提取    合併工作表    加密/解密儲存格   依清單傳送電子郵件    超級篩選    特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符……)  50+ 圖表 類型甘特圖……)  40+ 實用公式基於生日計算年齡……)  19 插入工具插入二維碼從路徑插入圖片……)  12 轉換工具金額轉大寫匯率轉換……)  7 合併和拆分工具高級合併行拆分 Excel 儲存格……)……還有更多
在您的慣用語言中使用 Kutools – 支援英文、西班牙文、德文、法文、中文及其他 40+ 種語言!

Kutools for Excel 擁有超過 300 項功能,確保您所需的功能僅需一鍵即可取得……


Office Tab -在 Microsoft Office(包含 Excel)中啟用分頁式閱讀與編輯

  • 一秒內在數十份開啟的文件間快速切換!
  • 每天為您減少數百次滑鼠點擊,遠離滑鼠手困擾。
  • 在檢視與編輯多份文件時,讓您的生產力提升高達 50%。
  • 為 Office(包含 Excel)帶來如 Chrome、Edge 與 Firefox 般的高效能分頁體驗。