根據條件在 Excel 中計算唯一數值的數量
Author: Xiaoyang Last Modified: 2025-05-12
在 Excel 工作表中,您可能會遇到一個問題,即根據特定條件計算唯一數值的數量。例如,如何從以下截圖所示的報告中計算產品“T-shirt”的唯一數量(Qty)值?在本文中,我將展示一些公式來在 Excel 中實現此任務。
根據條件在 Excel 2019、2016 和更早版本中計算唯一數值的數量
在 Excel 2019 和更早版本中,您可以結合 SUM、FREQUENCY 和 IF 函數來創建一個基於條件計算唯一值的公式,通用語法是:
{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
陣列公式,應同時按下 Ctrl + Shift + Enter 鍵。
陣列公式,應同時按下 Ctrl + Shift + Enter 鍵。
- criteria_range: 符合您指定條件的單元格範圍;
- criteria: 您希望根據其計算唯一值的條件;
- range: 包含要計算的唯一值的單元格範圍。
請將以下公式應用到空白單元格中,然後按下 Ctrl + Shift + Enter 鍵以獲得正確結果,請參見截圖:
=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
公式的解釋:
=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
- IF(A2:A12=E2,C2:C12): 此 IF 函數返回列 A 中的產品為“T-shirt”時列 C 的值,結果是一個類似這樣的陣列:{FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350}。
- FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)= FREQUENCY({FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350},{200;300;500;350;400;450;300;550;200;260;350}): FREQUENCE 函數用於計算陣列列表中的每個數值,並返回如下結果:{0;2;1;1;1;0;0;0;0;0;0;0}。
- --(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0)=--({0;2;1;1;1;0;0;0;0;0;0;0}>0): 測試陣列中的每個值是否大於 0,並得到如下結果:{FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}。然後,雙負號將 TRUE 和 FALSE 轉換為 1 和 0,返回類似這樣的陣列:{0;1;1;1;1;0;0;0;0;0;0;0}。
- SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))=SUM({0;1;1;1;1;0;0;0;0;0;0;0}): 最後,使用 SUM 函數將這些值相加,並得到總數:4。
提示:
如果您想根據多個條件計算唯一值,只需使用 * 字符將其他條件添加到公式中:
=SUM(--(FREQUENCY(IF((criteria,_range1=criteria1)* (criteria,_range2=criteria2)*…,range),range)>0))
根據條件在 Excel 365 中計算唯一數值的數量
在 Excel 365 中,ROWS、UNIQUE 和 FILTER 函數的組合可以幫助根據條件計算唯一數值的數量,通用語法是:
=ROWS(UNIQUE(FILTER(range,criteria_range=criteria)))
- range: 包含要計算的唯一值的單元格範圍。
- criteria_range: 符合您指定條件的單元格範圍;
- criteria: 您希望根據其計算唯一值的條件;
請將以下公式複製或輸入到單元格中,然後按 Enter 鍵以返回結果,請參見截圖:
=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
公式的解釋:
=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
- A2:A12=E2: 此表達式檢查 E2 單元格中的值是否存在於範圍 A2:A12 中,並得到如下結果:{FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}。
- FILTER(C2:C12,A2:A12=E2): FREQUENCE 函數用於計算陣列列表中的每個數值,並返回如下結果:{0;2;1;1;1;0;0;0;0;0;0;0}。
- UNIQUE(FILTER(C2:C12,A2:A12=E2))=UNIQUE({300;500;400;300;350}): 在這裡,UNIQUE 函數用於從列表陣列中提取唯一值以得到如下結果:{300;500;400;350}。
- ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))=ROWS({300;500;400;350}): ROWS 函數根據單元格範圍或陣列返回行數,因此結果是:4。
提示:
1. 如果匹配值不存在於數據範圍內,您將得到錯誤值,要將錯誤值替換為 0,請應用以下公式:
=IFERROR(ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2))), 0)
2. 根據多個條件計算唯一值,只需使用 * 字符將其他條件添加到公式中,如下所示:
=ROWS(UNIQUE(FILTER(range,(criteria_range1=criteria1)* (criteria_range2=criteria2)*…)))
相關函數使用:
- SUM:
- Excel SUM 函數返回提供的值的總和。
- FREQUENCY:
- FREQUENCY 函數計算值在值範圍內出現的頻率,然後返回垂直數字陣列。
- ROWS:
- ROWS 函數返回給定引用或陣列中的行數。
- UNIQUE:
- UNIQUE 函數返回列表或範圍中的唯一值列表。
- FILTER:
- FILTER 函數有助於根據您定義的條件過濾數據範圍。
更多文章:
- 計算一列中的唯一數值或日期的數量
- 假設您有一系列包含一些重複項的數字列表,現在您想計算唯一值的數量或列表中僅出現一次的值,如下面的截圖所示。在本文中,我們將討論一些有用的公式,以便在 Excel 中快速輕鬆地解決此任務。
- 計算兩列之間的所有匹配/重複項
- 比較兩列數據並計算兩列中的所有匹配或重複項可能是我們大多數人的常見任務。例如,您有兩列名稱,某些名稱同時出現在第一列和第二列中,現在您想計算兩列之間的所有匹配名稱(匹配位於兩列中的任何位置),如下面的截圖所示,本教程將介紹一些公式來在 Excel 中實現這一目標。
- 計算等於許多值之一的單元格數量
- 假設,我在列 A 中有一系列產品,現在我想從列 A 中獲取特定產品 Apple、Grape 和 Lemon(列在範圍 C4:C6 中)的總數量,如下面的截圖所示。通常,在 Excel 中,簡單的 COUNTIF 和 COUNTIFS 函數在此場景中不起作用。本文將討論如何使用 SUMPRODUCT 和 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 一樣。