Skip to main content

在 Excel 中計算範圍內的唯一值數量

Author: Siluvia Last Modified: 2025-05-12

本教程介紹如何使用指定公式在 Excel 的列表中僅計算重複項中的唯一值數量。

doc-count-unique-values-in-range-1


如何在 Excel 中計算單列中的唯一值數量?

假設您有一個如下方截圖所示的產品表,要計算「產品」列中僅有的唯一值,您可以應用以下公式之一。

doc-count-unique-values-in-range-2

通用公式

=SUMPRODUCT(--(FREQUENCY(MATCH(range,range,0),ROW(range)-ROW(range.firstcell)+1)>0))

=SUMPRODUCT(1/COUNTIF(range,range))

參數

Range: 您想要計算唯一值的單元格範圍;
Range.firstcell: 範圍的第一個單元格。

如何使用這些公式?

1. 選擇一個空白單元格來輸出結果。

2. 將以下公式之一輸入到所選單元格中並按下 Enter 鍵。

=SUMPRODUCT(--(FREQUENCY(MATCH(D3:D16,D3:D16,0),ROW(D3:D16)-ROW(D3)+1)>0))

=SUMPRODUCT(1/COUNTIF(D3:D16,D3:D16))

doc-count-unique-values-in-range-3

注意:

1) 在這些公式中,D3:D16 是您想要計算唯一值的單元格範圍,而 D3 是該範圍的第一個單元格。您可以根據需要更改它們。
2) 如果指定範圍內存在空單元格,第一個公式將返回 #N/A 錯誤,第二個公式將返回 #DIV/0 錯誤。

公式解釋

=SUMPRODUCT(--(FREQUENCY(MATCH(D3:D16,D3:D16,0),ROW(D3:D16)-ROW(D3)+1)>0))

  • MATCH(D3:D16,D3:D16,0): MATCH 函數獲取範圍 D3:D16 中每個項目的位置,如果值在數據範圍中出現多次,則會返回相同的位置以得到類似這樣的陣列 {1;2;3;2;1;1;3;2;1;1;1;2;3;2}。
  • 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;2;3;2;1;1;3;2;1;1;1;2;3;2},{1;2;3;4;5;6;7;8;9;10;11;12;13;14}): FREQUENCY 函數計算每個數字在數據陣列中出現的頻率,並返回類似這樣的數字陣列 {6;5;3;0;0;0;0;0;0;0;0;0;0;0}。
  • SUMPRODUCT(--{6;5;3;0;0;0;0;0;0;0;0;0;0;0}>0):
{6;5;3;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};
--{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}。
SUMPRODUCT({1;1;1;0;0;0;0;0;0;0;0;0;0;0}): SUMPRODUCT 函數對陣列中的所有數字求和,並返回最終結果為 3。

=SUMPRODUCT(1/COUNTIF(D3:D16,D3:D16))

  • COUNTIF(D3:D16,D3:D16): COUNTIF 函數計算每個值在範圍 D3:D16 中出現的次數,使用所有相同的值作為條件。它返回類似這樣的陣列 {6;5;3;5;6;6;3;5;6;6;6;5;3;5},這意味著筆記型電腦出現 6 次,投影機出現 5 次,顯示器出現 3 次。
  • 1/{6;5;3;5;6;6;3;5;6;6;6;5;3;5}: 陣列中的每個數字除以 1,然後返回一個新的陣列 {0.166666666666667;0.2;0.333333333333333;0.2;0.166666666666667;0.166666666666667;0.2;
    0.333333333333333;0.166666666666667;0.166666666666667;0.166666666666667;0.333333333333333;0.2;
    0.333333333333333;}.
  • SUMPRODUCT({0.166666666666667;0.2;0.333333333333333;0.2;0.166666666666667;0.166666666666667;



    0.2;0.333333333333333;0.166666666666667;0.166666666666667;0.166666666666667;0.333333333333333;0.2;



    0.333333333333333;})
    : 然後 SUMPRODUCT 函數對陣列中的所有數字求和,並返回最終結果為 3。

相關函數

Excel SUMPRODUCT 函數
Excel SUMPRODUCT 函數可用於將兩列或多列或陣列相乘,然後獲得乘積的總和。

Excel FREQUENCY 函數
Excel FREQUENCY 函數計算值在值範圍內出現的頻率,然後返回垂直數字陣列。

Excel MATCH 函數
Excel MATCH 函數在單元格範圍內搜索特定值,並返回該值的相對位置。

Excel ROW 函數
Excel ROW 函數返回引用的行號。

Excel COUNTIF 函數
Excel COUNTIF 函數用於計算符合條件的單元格數量。


相關公式

計算過濾列表中可見行的數量
本教程介紹如何使用 SUBTOTAL 函數在 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 一樣。