Skip to main content

在Excel中根據條件計算唯一值的數量

Author: Siluvia Last Modified: 2025-05-12

若要根據另一列中的指定條件僅計算唯一值,您可以應用基於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))}

參數

範圍:包含與條件對應的值的單元格範圍;
條件:您希望根據其計算唯一值的條件;
:您希望從中計算唯一值的單元格範圍;
值.首單元格:您希望從中計算唯一值的範圍的第一個單元格。

注意:此公式必須作為陣列公式輸入。應用公式後,如果公式周圍有大括號,則表示陣列公式已成功創建。

如何使用這些公式?

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 函數返回引用的行號。


相關公式

計算過濾列表中可見行的數量
本教程解釋了如何使用 SUBTOTAL 函數在 Excel 中計算過濾列表中可見行的數量。

計算範圍內的唯一值數量
本教程解釋了如何使用指定公式在 Excel 列表中計算重複項中的唯一值數量。

根據條件計算可見行數
本教程提供了詳細步驟,幫助您根據條件計算可見行數。

在非連續範圍上使用 COUNTIF
本逐步指南演示了如何在 Excel 中的非連續範圍上使用 countif 函數。


最佳的辦公生產力工具

Kutools for Excel - 幫助您脫穎而出

? Kutools AI 助手:基於智能執行生成代碼創建自訂公式分析數據並生成圖表調用 Kutools 函數…來徹底改變數據分析方式。
熱門功能查找、標記或識別重複值  |  刪除空行  |  合併列或單元格而不丟失數據  |  四捨五入無需公式 ...
超級 VLookup多條件  |  多值  |  跨多工作表  |  模糊查找...
高級下拉列表簡易下拉列表  |  依賴下拉列表  |  多選下拉列表...
列管理器添加特定數量的列  |  移動列  |  切換隱藏列的可見狀態  比較列以選擇相同和不同的單元格 ...
特色功能網格聚焦  |  設計檢視  |  增強編輯欄  |  工作簿與工作表管理器 | 資源庫(自動文本)  |  日期提取器  |  合併資料  |  加密/解密儲存格  |  按清單發送電子郵件  |  超級篩選  |  特殊篩選(篩選粗體/斜體/刪除線...) ...
頂級 15 種工具集12 個文字工具添加文本刪除特定字符 ...)  |  50+ 圖表 類型甘特圖 ...)  |  40+ 實用 公式基於生日計算年齡 ...)  |  19 個插入工具插入QR碼從路徑插入圖片 ...)  |  12 個轉換工具金額轉大寫匯率轉換 ...)  |  7 個合併與分割工具高級合併行分割Excel單元格 ...)  |  ... 還有更多

Kutools for Excel 擁有超過 300 種功能,確保您需要的功能只需點擊一下即可實現...


Office Tab - 啟用 Microsoft Office(包括 Excel)中的分頁閱讀和編輯功能

  • 一秒鐘內在數十個打開的文檔之間切換!
  • 每天為您減少數百次鼠標點擊,告別滑鼠手。
  • 當查看和編輯多個文檔時,您的工作效率提高 50%。
  • 為 Office(包括 Excel)帶來高效的分頁功能,就像 Chrome、Edge 和 Firefox 一樣。