Skip to main content

Kutools for Office — 一套工具,五種功能。完成更多工作。

如何根據多個條件在Excel中計算唯一值的數量?

Author Xiaoyang Last modified

在許多實際情況中,通常不僅僅是計算值的數量,還需要確定數據中有多少唯一的項目符合某些條件。例如,您可能想知道某位銷售人員銷售了多少種不同的產品,或者在特定時間段內下了多少筆唯一的訂單。要高效地處理這些任務,需熟悉適合的公式、像資料透視表這樣的進階功能,甚至自訂的VBA解決方案。本文將探討幾種實用的方法來根據一個或多個條件計算唯一值的數量,並提供逐步指示和技巧。

根據單一條件計算唯一值

根據兩個日期計算唯一值

根據兩個條件計算唯一值

根據三個條件計算唯一值

使用資料透視表計算唯一值(唯一計數,Excel 2013+)

使用VBA代碼計算唯一值(適用於複雜/自動化案例)


arrow blue right bubble 根據單一條件計算唯一值

考慮一個常見的情況:您想計算Tom銷售了多少種不同的產品。當您的數據集較簡單並且希望基於單一條件(如個人銷售記錄)評估唯一性時,這種方法非常合適。雖然操作簡單,但需要小心使用陣列公式。

A screenshot showing a dataset for counting unique values based on one criteria in Excel

對於此情況,請在空白單元格中輸入以下公式(例如,G2單元格):

=SUM(IF("Tom"=$C$2:$C$20,1/(COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20)),0))

輸入公式後,按 Ctrl + Shift + Enter(而不是只按 Enter)以確認其為陣列公式。公式欄中會出現大括號,並且您將立即看到如下所示的結果:

A screenshot showing the result of counting unique values with one criteria

注意:

  • “Tom” 是您用來過濾結果的條件。如果需要更靈活,可以將 “Tom” 替換為另一個單元格的引用(例如,$F$2).
  • $C$2:$C$20 包含要評估的銷售員名稱。
  • $A$2:$A$20 是您想要進行唯一計數的產品列。
  • 如果您的數據範圍改變,請記住相應調整引用。

提示:如果您使用的是 Excel 365 或 Excel 2019 及更高版本,您可以嘗試使用 UNIQUEFILTER 函數來簡化公式。

如果您遇到任何 #DIV/0!錯誤,請仔細檢查條件,並確保範圍長度相等。


arrow blue right bubble 根據兩個指定日期計算唯一值

當您需要查找特定日期範圍內的唯一項目數量時,例如,2016年9月1日至2016年9月30日之間售出的所有唯一產品,可以應用此方法。這對於分析特定時期之間的數據趨勢特別有用,例如每月、每季或自定義日期範圍。但是要注意日期格式;它必須與工作表中的日期值匹配。

在要顯示結果的空白單元格中輸入以下公式:

=SUM(IF($D$2:$D$20<=DATE(2016,9,30)*($D$2:$D$20>=DATE(2016,9,1)),1/COUNTIFS( $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30),$D$2:$D$20, ">="&DATE(2016,9,1))),0)

輸入公式後,按 Ctrl + Shift + Enter 作為陣列公式執行。下面的截圖展示了結果:

A screenshot showing the result of counting unique values between two dates in Excel

注意:

  • 2016,9,12016,9,30 是開始和結束日期條件。您可以根據需要修改這些日期,或者使用單元格引用來實現動態日期過濾。
  • $D$2:$D$20 包含要檢查的日期條目。
  • $A$2:$A$20 再次是要唯一計數的項目或產品列。
  • 確保您的日期是以有效的Excel日期形式存儲,而不是文本字符串。如果結果不如預期,請確認日期格式和範圍。

提示:使用 DATE(year, month, day) 來避免區域日期格式問題。當使用動態範圍時,考慮使用命名範圍以提高清晰度。


arrow blue right bubble 根據兩個條件計算唯一值

假設您想分析 Tom 在九月售出的產品,將姓名和日期範圍結合到您的唯一計數中。這種情況在基於期間的績效審查或分段分析中很常見。隨著條件的擴展,公式變得更加複雜,對數據準確性的關注也變得更加重要。

在任何空白單元格中輸入以下公式,例如 H2:

=SUM(IF(("Tom"=$C$2:$C$20)*($D$2:$D$20<=DATE(2016,9,30)*($D$2:$D$20>=DATE(2016,9,1))),1/COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30),$D$2:$D$20, ">="&DATE(2016,9,1))),0)

輸入公式後,按 Ctrl + Shift + Enter 確認。您應該會立即看到唯一計數;檢查下圖說明:

A screenshot showing the result of counting unique values with two criteria in Excel

注意:

  • “Tom” 是名字條件,而 “2016,9,1” 和 “2016,9,30” 是您的日期範圍邊界。根據需要進行調整,或使用單元格引用使其動態化。
  • $C$2:$C$20 是員工(或其他第一條件)列;$D$2:$D$20 是日期列;$A$2:$A$20 包含要計數的唯一項目。
  • 範圍必須全部長度相同,以防止錯誤。

如果您希望使用“或”條件,例如計算由Tom銷售或在南部地區銷售的唯一產品數量,可以使用以下公式。這使得搜索條件更廣泛,但如果數據同時滿足兩個條件,結果可能會重疊:

=SUM(--(FREQUENCY(IF(("Tom"=$C$2:$C$20)+("South"=$B$2:$B$20), COUNTIF($A$2:$A$20, "<"&$A$2:$A$20), ""), COUNTIF($A$2:$A$20, "<"&$A$2:$A$20))>0))

別忘了按 Ctrl + Shift + Enter。您將看到如下所示的結果:

A screenshot showing unique values counted based on an 'or' condition in Excel

提示:應用 OR 條件時,請注意如果同一記錄滿足兩個條件,可能會出現重複計數。對於大型數據集,性能可能會受影響。


arrow blue right bubble 根據三個條件計算唯一值

有時候,您的分析可能需要三個或更多條件,例如,僅在北部地區的九月份由Tom銷售的唯一產品數量。這在多維數據分析中很常見,用於報告或針對性的商業洞察。處理這種複合邏輯時,謹慎管理引用至關重要。

在此空白單元格(例如 I2)中放置此陣列公式:

=SUM(IF(("Tom"=$C$2:$C$20)*($D$2:$D$20<=DATE(2016,9,30))*($D$2:$D$20>=DATE(2016,9,1))*("North"=$B$2:$B$20),1/COUNTIFS($C$2:$C$20, "Tom", $A$2:$A$20, $A$2:$A$20, $D$2:$D$20, "<="&DATE(2016,9,30), $D$2:$D$20, ">="&DATE(2016,9,1), $B$2:$B$20, "North")),0)

按下 Ctrl + Shift + Enter 完成。以下是參考樣本結果:

A screenshot showing unique values counted based on three criteria in Excel

對於高級條件,雙重檢查所有範圍是否一致,以及數據類型(例如日期和文本)是否正確。錯位可能會導致錯誤或誤導結果。

提示:

  • 如果在大型數據集上遇到性能問題,考慮分解公式或使用Excel的資料透視表解決方案。
  • 對所有條件使用命名範圍或引用單元格可提高可讀性並減少公式錯誤。
  • 對於頻繁使用,考慮將這些公式記錄在命名單元格引用或自訂函數中。

arrow blue right bubble 使用資料透視表計算唯一值(唯一計數,Excel 2013+)

對於使用 Excel 2013 或更高版本的用戶,資料透視表提供了一種更具互動性、非公式替代方案來跨一個或多個條件計算唯一值。唯一計數功能幫助您有效地總結和過濾大型數據集,使此方法特別適合動態、報表基礎環境。然而,早期版本的 Excel 不支持資料透視表中的唯一計數功能。

如何使用此方法:

  1. 選擇您的數據集並前往 插入 > 資料透視表。
  2. 在 創建資料透視表 對話框中,選擇放置資料透視表的位置,勾選「將此數據添加到數據模型」框,然後點擊 確定。
  3. 將您想唯一計數的字段(例如,產品)拖到 值 區域。默認情況下,它會顯示為 「計數...」。
  4. 點擊 值 區域中的字段並選擇 值字段設置。
  5. 在彈出的對話框中,向下滾動並選擇 唯一計數 (此選項僅在 Excel 2013 或更高版本中可用,並且當資料透視表是通過啟用「將此數據添加到數據模型」選項創建時才會出現)。
  6. 將您的條件字段(例如,銷售員、地區、日期)添加到 過濾器 或 行/列 區域以應用單個或多個條件。
  7. 現在,您的資料透視表將根據您選擇的條件顯示唯一值的計數。

優點:高度視覺化,無需編輯公式即可輕鬆調整過濾器,適合互動式報告。

局限性:不適用於 Excel 2010 或更早版本;添加新數據需要手動刷新資料透視表。

實用提示:如果它們不是有意為之,始終確保源數據中沒有重複記錄。如果找不到唯一計數選項,重新創建資料透視表並檢查「將此數據添加到數據模型」選項。


arrow blue right bubble 使用 VBA 代碼計算唯一值(適用於複雜/自動化案例)

有時候,您可能需要根據各種條件自動計算唯一值,特別是在處理非常大的數據集或頻繁重複分析時。VBA 宏在這種情況下非常理想,因為它可以在設置後快速處理不同邏輯——包括多條件過濾——而無需手動干預。然而,VBA 比普通 Excel 功能更先進,因此最好由熟悉宏的用戶或有持續分析需求的用戶使用。

操作步驟:

  1. Alt + F11 打開 VBA 編輯器。在編輯器中,選擇 插入 > 模塊 以創建一個新模塊。
  2. 將以下 VBA 代碼複製並粘貼到模塊中:
Sub CountUniqueWithCriteria()
    Dim DataRange As Range
    Dim CriteriaRange As Range
    Dim CriteriaValue As Variant
    Dim Dict As Object
    Dim i As Long
    Dim UniqueCount As Long
    Dim ResultCell As Range
    
    Set Dict = CreateObject("Scripting.Dictionary")
    
    ' Prompt for range settings
    Set DataRange = Application.InputBox("Select data range (items to count):", "KutoolsforExcel", Type:=8)
    Set CriteriaRange = Application.InputBox("Select criteria range (e.g. Salesperson):", "KutoolsforExcel", Type:=8)
    CriteriaValue = Application.InputBox("Enter criteria value:", "KutoolsforExcel", "", Type:=2)
    Set ResultCell = Application.InputBox("Select cell for result output:", "KutoolsforExcel", Type:=8)
    
    On Error Resume Next
    For i = 1 To DataRange.Rows.Count
        If CriteriaRange.Cells(i, 1).Value = CriteriaValue Then
            If Not Dict.Exists(DataRange.Cells(i, 1).Value) Then
                Dict.Add DataRange.Cells(i, 1).Value, 1
            End If
        End If
    Next i
    
    UniqueCount = Dict.Count
    ResultCell.Value = UniqueCount
    
    MsgBox "Unique count for '" & CriteriaValue & "': " & UniqueCount, vbInformation, "KutoolsforExcel"
End Sub
  1. 關閉 VBA 編輯器並返回到您的工作表。按 Alt + F8,選擇 CountUniqueWithCriteria,然後運行宏。
  2. 按照輸入提示指定範圍和條件。結果將出現在您選擇的單元格中,並且也會作為消息框顯示。

參數解釋和注意事項:

  • 此宏目前設定為一個條件。若要將其擴展為多個條件,請修改循環內的 If ... Then 邏輯。
  • 運行宏之前,務必保存您的工作簿,因為變更無法撤銷。
  • 如果遇到執行錯誤,請在 Excel 設置中啟用宏。
  • 對於大型或經常更新的數據,此方法效果很好,因為手動公式會顯得笨拙。

優勢:高度可定制且可自動化,能高效處理大型和變化的數據集。適合高級或重複的工作流程需求。

缺點:需要宏權限,初學者可能需要時間熟悉 VBA 操作。


在處理基於條件的唯一值計數時,始終確認您的範圍引用並確保所有條件列大小一致。範圍不匹配是錯誤或不正確結果的常見原因。如果公式返回意外結果,請檢查隱藏的格式問題或空白單元格。對於性能關鍵場景,資料透視表和 VBA 提供了陣列公式的穩健替代方案。選擇最適合您舒適程度和數據集複雜性的解決方案。請記住,Kutools for Excel 提供了額外的工具和快捷方式,可以進一步提高複雜工作簿中的效率。

最佳 Office 生產力工具

🤖 Kutools AI 助手:以智能執行為基礎,革新數據分析 生成程式碼 創建自訂公式 分析數據並生成圖表 調用 Kutools 增強函數
熱門功能查找、選取項目的背景色或標記重複值刪除空行合併列或單元格且不遺失數據四捨五入(免公式)...
高級 LOOKUP多條件 VLookup多值 VLookup多表查找模糊查找...
高級下拉列表快速創建下拉列表 依賴型下拉列表 多選下拉列表...
列管理器添加指定數量的列移動列切換隱藏列的顯示狀態比較區域及列...
精選功能網格聚焦 設計檢視 增強編輯欄 工作簿及工作表管理器 資源庫(快捷文本) 日期提取器 合併資料 加密/解密儲存格 按列表發送電子郵件 超級篩選 特殊篩選(篩選粗體/傾斜/刪除線...)...
15 大工具集12 項文本工具添加文本刪除特定字符…)50+ 儀表 類型甘特圖等)40+ 實用 公式基於生日計算年齡等)19 項插入工具插入QR码根據路徑插入圖片等)12 項轉換工具金額轉大寫匯率轉換等)7 項合併與分割工具高級合併行分割儲存格等)...及更多
使用 Kutools,語言任你選 — 支援英語、西班牙語、德語、法語、中文及超過40 種語言!

運用 Kutools for Excel,全面提升您的 Excel 技能,體驗前所未有的高效。 Kutools for Excel 提供超過300 項進階功能,讓您提升工作效率、節省時間。 點此尋找您最需要的功能...


Office Tab 為 Office 帶來分頁介面,讓您的工作更加輕鬆簡單

  • 在 Word、Excel、PowerPoint 中啟用分頁編輯與閱讀
  • 在同一視窗的新分頁中打開與創建多份文件,而非開啟新視窗。
  • 提升您的生產力50%,每日可幫您減少數百次鼠標點擊!

所有 Kutools 外掛,一次安裝

Kutools for Office 套裝整合了 Excel、Word、Outlook 和 PowerPoint 的外掛,外加 Office Tab Pro,非常適合需要跨 Office 應用程式協同作業的團隊。

Excel Word Outlook Tabs PowerPoint
  • 全合一套裝 — Excel、Word、Outlook及 PowerPoint 外掛 + Office Tab Pro
  • 一鍵安裝,一份授權 — 幾分鐘完成設置(支援 MSI)
  • 協同運作更順暢 — Office 應用間無縫提升生產力
  • 30 天全功能試用 — 無需註冊、無需信用卡
  • 最超值 — 一次購買,節省單獨外掛費用