Excel 如何計算不重複個數?這幾招讓你秒懂,告別重複數據的煩惱!

Excel 如何計算不重複個數?這幾招讓你秒懂,告別重複數據的煩惱!

身為一個整天跟 Excel 打交道的上班族,最常遇到的痛點之一,就是面對一大堆數據時,該怎麼快速找出其中不重複的項目呢?特別是在做客戶名單、產品列表、或是統計某些類別的出現次數時,重複的資訊簡直是讓人頭痛的元兇!今天,就讓我來分享幾個我親身實驗過,絕對實用、又能讓你的 Excel 功力瞬間提升的「計算不重複個數」的絕招吧!別再傻傻地手動數了,跟著我,你也能成為 Excel 大神!

為什麼你需要知道如何計算不重複個數?

這問題看似簡單,但其實它的重要性不容小覷。想像一下,如果你的客戶名單裡有重複的資料,那你可能以為你的客戶數量比實際來得多,這樣一來,後續的行銷活動或客戶經營策略就可能出現偏差。又或者,你在統計某產品的銷量時,如果漏掉了重複計算的部分,那麼你的業績報表就會失準。所以,精確地計算不重複的項目,不僅能幫助你更了解你的數據,更能做出更明智的決策。這就像是在整理你的房間,如果把同樣的東西放了兩次,空間就會變亂,而且你也不知道自己到底有多少東西。Excel 裡的數據也是一樣的道理,**準確計算不重複的數量,是進行任何有意義分析的基石。**

快速答案:Excel 計算不重複個數最常用的方法

在 Excel 中,計算不重複個數最直接、也最常見的方法,是利用 **`UNIQUE` 函數** 搭配 **`ROWS` 函數**,或是使用 **`SUMPRODUCT` 函數** 結合 **`COUNTIF` 函數**。這兩種方法都能有效率地得到你想要的結果,而且操作起來並不複雜。如果你是 Excel 的老手,可能會想到樞紐分析表,它也是個好用的工具,但對於只想快速得到一個數字的人來說,函數可能是更便捷的選擇。

方法一:利用 `UNIQUE` 和 `ROWS` 函數 (推薦給較新版本的 Excel 使用者)

如果你使用的 Excel 版本較新(Excel 2021、Microsoft 365),那麼 `UNIQUE` 函數絕對是你的首選!它能夠直接從一個範圍中提取出所有不重複的值。搭配 `ROWS` 函數,我們就可以輕鬆計算出這些不重複值的總數了。操作起來超級簡單,就像變魔術一樣!

步驟說明:

  1. 假設你的不重複資料在 A1:A100 的範圍內。
  2. 在你想要顯示結果的儲存格中,輸入以下公式:
    =ROWS(UNIQUE(A1:A100))
  3. 按下 Enter 鍵,噹噹!你就會看到 A1:A100 這個範圍內,總共有多少個不重複的項目了。

為什麼這樣做有效?

`UNIQUE(A1:A100)` 這個部分,它會「吐」出一個新的陣列,這個陣列裡只包含 A1:A100 範圍內所有不重複的值。例如,如果 A1:A100 裡面有「蘋果」、「香蕉」、「蘋果」、「橘子」、「香蕉」,那麼 `UNIQUE(A1:A100)` 就會得到一個包含「蘋果」、「香蕉」、「橘子」的陣列。接著,`ROWS()` 函數就會計算這個陣列有多少列(也就是有多少個項目),進而告訴你總共有幾個不重複的項目。是不是超直覺的呢?

方法二:利用 `SUMPRODUCT` 和 `COUNTIF` 函數 (適用於所有 Excel 版本)

對於還在使用舊版本 Excel 的朋友,或是希望有更廣泛兼容性的方法,`SUMPRODUCT` 搭配 `COUNTIF` 絕對是經典不敗的組合!這個方法雖然需要一點點理解,但一旦掌握,你就能在各種場合下輕鬆解決問題。

步驟說明:

  1. 同樣假設你的不重複資料在 A1:A100 的範圍內。
  2. 在你想要顯示結果的儲存格中,輸入以下公式:
    =SUMPRODUCT(1/COUNTIF(A1:A100,A1:A100))
  3. 按下 Enter 鍵,結果就會出現囉!

為什麼這樣做有效?這部分需要一點耐心來理解:

  • `COUNTIF(A1:A100,A1:A100)`: 這就像是在對 A1:A100 範圍裡的每一個儲存格,去計算它在整個 A1:A100 範圍內出現了幾次。舉例來說,如果 A1 是「蘋果」,A2 是「香蕉」,A3 又是「蘋果」,那麼 `COUNTIF` 會針對 A1 (蘋果) 算出 2,針對 A2 (香蕉) 算出 1,針對 A3 (蘋果) 算出 2。它會針對 A1:A100 範圍裡的每個項目,都跑一次計算,最終會產生一個包含各個項目出現次數的陣列。例如,對於「蘋果」、「香蕉」、「蘋果」,它產生的陣列可能是 `{2, 1, 2}`。
  • `1/COUNTIF(…)`: 接下來,我們把上面計算出來的次數,取它的倒數,也就是 `1` 除以那個次數。對於上面的例子 `{2, 1, 2}`,就會變成 `{1/2, 1/1, 1/2}`,也就是 `{0.5, 1, 0.5}`。
  • `SUMPRODUCT(…)`: 最後,`SUMPRODUCT` 函數會將這個陣列中的所有數字加總起來。也就是 `0.5 + 1 + 0.5 = 2`。

等等,為什麼加起來是 2?我的不重複項目是「蘋果」、「香蕉」、「橘子」,應該是 3 才對?

你可能會有點困惑,怎麼會算出 2 呢?這是因為我上面舉的例子比較簡化。在實際運作中,`COUNTIF(A1:A100,A1:A100)` 會針對 A1:A100 範圍裡的「每一個」儲存格,去計算它在整個範圍內出現的次數。所以,如果 A1 是「蘋果」,A2 是「香蕉」,A3 是「橘子」,A4 是「蘋果」,A5 是「香蕉」,那麼 `COUNTIF` 會產生這樣的陣列(假設 A1:A5):

  • A1 (蘋果): 2 次
  • A2 (香蕉): 2 次
  • A3 (橘子): 1 次
  • A4 (蘋果): 2 次
  • A5 (香蕉): 2 次

所以,`COUNTIF(A1:A5,A1:A5)` 會產生一個陣列:`{2, 2, 1, 2, 2}`。

接著,`1/COUNTIF(…)` 就會變成:`{1/2, 1/2, 1/1, 1/2, 1/2}`,也就是 `{0.5, 0.5, 1, 0.5, 0.5}`。

最後,`SUMPRODUCT` 加總:`0.5 + 0.5 + 1 + 0.5 + 0.5 = 3`。這就是我們期望的不重複個數!

所以,這個公式的巧妙之處在於:每一個不重複的項目,在它第一次出現時,我們把它計為 `1`(透過 `1/出現次數` 的加總),而它後續的重複出現,則會因為 `1/出現次數` 的值變小(例如 `1/2=0.5`),最終加總起來,每個不重複項目只會貢獻 `1` 的價值。是不是很有意思?

方法三:利用樞紐分析表 (適合需要更深入分析的使用者)

如果你不只是想知道總數,還想進一步了解每個不重複項目分別出現了幾次,或是想對這些不重複項目進行分類匯總,那麼樞紐分析表絕對是你最好的夥伴!

步驟說明:

  1. 選取你的數據範圍,包含標題列。
  2. 點擊 Excel 功能區的「插入」選項,然後選擇「樞紐分析表」。
  3. 在彈出的「建立樞紐分析表」對話框中,確認你的資料範圍,並選擇你想放置樞紐分析表的位置(新工作表或現有工作表),然後點擊「確定」。
  4. 在右側的「樞紐分析表欄位」窗格中,將你想要計算不重複個數的欄位,拖曳到「列」區域。
  5. 接著,將同一個欄位,再次拖曳到「值」區域。
  6. 在「值」區域裡,你會看到這個欄位預設可能是「加總」,點擊它,然後選擇「欄位設定」。
  7. 在「值欄位設定」對話框中,將「計算類型」從「加總」改成「最小值」或「最大值」,然後點擊「確定」。(請注意:這裡的「最小值」或「最大值」並不是真的要找最小值或最大值,而是利用 Excel 在值欄位對非數字欄位預設的匯總方式,通常會是「計數」或「最小值/最大值」,我們真正的目的是要讓它計算「不重複項」。更精確的做法是,在「值欄位設定」中,找到「匯總方式」,然後選擇「計算個數相異值」。不過,並非所有 Excel 版本都支援「計算個數相異值」,如果你的版本沒有,請回到方法一或方法二。如果你的版本有,請選擇它!)
  8. 如果你的 Excel 版本支援「計算個數相異值」,選擇這個選項後,你會直接得到每個不重複項目出現的數量。
  9. 如果你沒有「計算個數相異值」的選項,那麼你可以這樣做:將該欄位拖曳到「列」區域,然後再將「同一個欄位」拖曳到「值」區域,此時 Excel 會預設為「加總」。你點擊這個值欄位,選擇「值欄位設定」,在「計算類型」中,選擇「計數」。這樣你會得到每個項目出現的總次數。然後,你再到「列」區域,選取你剛剛拖曳進來的欄位,在「欄位設定」中,選擇「摘要方式」為「計數」,這樣你就會得到不重複的項目清單。最後,你可以對「計數」欄位進行加總,這就是你想要的結果。

我的經驗分享:

我個人在使用樞紐分析表時,如果只是要一個簡單的不重複總數,我還是偏好使用 `UNIQUE` 或 `SUMPRODUCT` 函數,因為速度更快,而且不易出錯。但是,當我需要進一步了解「哪些」項目是不重複的,以及它們各自的頻率分佈時,樞紐分析表就顯得無比強大。尤其是在「計算個數相異值」這個功能出現之後,樞紐分析表的便利性又大大提升了!

實際應用情境舉例

讓我們來看幾個實際的例子,你就會知道這些方法有多實用了!

情境一:計算有多少位「不同」的客戶來過你的網站

假設你的網站流量記錄在 A 欄,每一列記錄一位訪客的 IP 位址。現在,你想知道到底有多少「獨立」的 IP 位址來過你的網站。這時候,你就可以在一個空白的儲存格輸入:

  • 如果使用 `UNIQUE` 和 `ROWS`:=ROWS(UNIQUE(A:A))
  • 如果使用 `SUMPRODUCT` 和 `COUNTIF`:=SUMPRODUCT(1/COUNTIF(A:A,A:A))

這樣,你就能精確知道你的網站吸引了多少不同的訪客了。

情境二:統計公司有多少種「不同」的產品被銷售出去

你的銷售記錄在 B 欄,每一列都是一個產品名稱。你想要知道公司總共銷售過多少種「不同」的產品,而不是總銷售量。

  • 使用 `UNIQUE` 和 `ROWS`:=ROWS(UNIQUE(B:B))
  • 使用 `SUMPRODUCT` 和 `COUNTIF`:=SUMPRODUCT(1/COUNTIF(B:B,B:B))

透過這個方式,你就能清楚了解你的產品線的廣度。

情境三:盤點有多少「不重複」的員工參與了某項培訓

參與培訓的員工名單在 C 欄,裡面可能會有同一位員工因為不同場次而重複出現。你想知道總共有多少位「不同」的員工參加了培訓。

  • 使用 `UNIQUE` 和 `ROWS`:=ROWS(UNIQUE(C:C))
  • 使用 `SUMPRODUCT` 和 `COUNTIF`:=SUMPRODUCT(1/COUNTIF(C:C,C:C))

這樣,你就能得到確切的參訓人數。

處理空白儲存格與錯誤值

在使用 `SUMPRODUCT(1/COUNTIF(…))` 這個公式時,我們需要特別注意一個眉角,那就是如果你的數據範圍內有空白儲存格,這個公式可能會出現 `#DIV/0!` 的錯誤。這是因為 `COUNTIF` 會將空白儲存格計為一個,然後 `1/1` 會得到 1。但如果你的範圍都是空白,那就會有問題。更常見的是,如果你有真正的錯誤值(像是 `#N/A`),也會影響計算。

如何排除空白儲存格?

我們可以修改 `SUMPRODUCT` 的公式,加入一個條件來排除空白儲存格。假設你的數據範圍是 `A1:A100`:

=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))

解析一下這個改良版的公式:

  • `A1:A100<>“”`: 這部分會產生一個 TRUE/FALSE 的陣列,如果儲存格不等於空白,就是 TRUE (Excel 視為 1),如果是空白,就是 FALSE (Excel 視為 0)。
  • `COUNTIF(A1:A100,A1:A100&””)`: 這個 `&””` 是個小技巧,它確保即使你的範圍中有空值,`COUNTIF` 也能正常處理,避免產生錯誤。
  • `SUMPRODUCT((A1:A100<>“”)/COUNTIF(A1:A100,A1:A100&””))`: `SUMPRODUCT` 會將 TRUE/FALSE 陣列(視為 1/0)與 `COUNTIF` 的結果進行計算。對於非空白的儲存格,它會進行 `1 / 該儲存格出現次數` 的計算;對於空白的儲存格,由於 `A1:A100<>“”` 在此處是 FALSE (0),所以 `0 / 該儲存格出現次數` 的結果是 0,這樣就有效地將空白儲存格排除在計算之外了。

關於 `UNIQUE` 函數:

相較之下,`UNIQUE` 函數就比較聰明,它預設就會忽略空白儲存格。如果你想讓 `UNIQUE` 函數也包含空白儲存格,那需要額外的處理,但通常情況下,我們不希望將空白算作一個不重複的項目,所以 `UNIQUE` 在這方面更為方便。

常見問題解答 (FAQ)

Q1:我使用的是 Excel 2010 版本,可以使用 `UNIQUE` 函數嗎?

很抱歉,`UNIQUE` 函數是 Excel 較新版本(Excel 2021、Microsoft 365)才有的動態陣列函數,Excel 2010 是無法直接使用 `UNIQUE` 函數的。不過別擔心,你可以完全放心地使用 **`SUMPRODUCT` 搭配 `COUNTIF`** 的方法,這個組合在所有 Excel 版本中都適用,而且效果一樣精準!

Q2:我的數據中有重複的文字和重複的數字,這幾種方法都適用嗎?

絕對適用!無論你的數據是文字(如產品名稱、客戶姓名)還是數字(如產品 ID、學號),`UNIQUE`、`SUMPRODUCT` 搭配 `COUNTIF`,以及樞紐分析表的「計算個數相異值」功能,都能夠準確地計算不重複的個數。它們處理的是儲存格內的「值」,所以資料類型不是問題。

Q3:我只想計算特定條件下的不重複個數,該怎麼做?

這是一個很棒的問題!如果需要加上條件,我們就可以利用 `SUMIFS` 或 `COUNTIFS` 搭配 `UNIQUE`,或是進一步利用 `FILTER` 函數(如果你的 Excel 版本支援)。

例如,使用 `FILTER` 和 `UNIQUE`(適用於較新版本 Excel):

假設你的數據在 A1:A100,而判斷條件在 B1:B100(例如,只計算「已出貨」狀態的產品)。

=ROWS(UNIQUE(FILTER(A1:A100,B1:B100="已出貨","無符合項目")))

這個公式會先用 `FILTER` 篩選出 B 欄是「已出貨」的 A 欄數據,然後 `UNIQUE` 找出這些篩選結果中的不重複值,最後 `ROWS` 計算數量。如果沒有符合條件的項目,`FILTER` 會顯示「無符合項目」。

如果你的 Excel 版本較舊,無法使用 `FILTER`,則會稍微複雜一些,可能需要陣列公式的輔助,或是考慮使用樞紐分析表搭配篩選。

Q4:我計算出來的結果是小數點,為什麼?

如果你計算出來的結果是小數點,那很可能是因為你使用的 `SUMPRODUCT(1/COUNTIF(…))` 公式中,沒有正確排除空白儲存格,或者你的數據範圍本身就包含一些非預期的值。請務必檢查你使用的公式是否加入了排除空白儲存格的條件,如我們前面介紹的改良版公式:=SUMPRODUCT((A1:A100<>"")/COUNTIF(A1:A100,A1:A100&""))。另外,確認你的數據範圍是否乾淨,沒有混雜奇怪的符號或格式。

Q5:什麼是「動態陣列函數」?為什麼 `UNIQUE` 是其中之一?

「動態陣列函數」是 Excel 較新版本(Excel 2019、Microsoft 365)引入的一種強大功能。過去,當我們輸入一個需要產生多個結果的公式時(稱為陣列公式),我們需要按 `Ctrl + Shift + Enter` 來啟用它,並且公式的結果會「溢出」到相鄰的儲存格。而動態陣列函數則不一樣,你只需要像普通公式一樣輸入,它的結果會「自動」溢出到所需的儲存格範圍,而且當原始數據變動時,結果也會動態更新。`UNIQUE`、`FILTER`、`SORT`、`SORTBY`、`SEQUENCE` 等都是動態陣列函數的代表。它們讓 Excel 的數據處理變得更加直觀和高效!

結論

看到這裡,相信你已經對「Excel 如何計算不重複個數」這個問題有了非常深入的了解!無論你是使用最新的 Excel 365,還是較舊的版本,都有適合你的方法。`UNIQUE` 函數的簡潔明瞭,`SUMPRODUCT` 搭配 `COUNTIF` 的經典穩健,以及樞紐分析表的彈性強大,這幾種方法都能幫助你輕鬆告別重複數據的煩惱,讓你的報表更精確,分析更到位。別再讓重複的數據影響你的判斷了,趕快把這些技巧學起來,讓你的 Excel 應用更上一層樓吧!

我在實際工作中,常常需要處理大量的客戶訂單紀錄,計算有多少「獨立」的客戶下過單,一直是個重要的KPI。以前總是需要花很多時間去篩選、複製、貼上,或是寫一些複雜的陣列公式。自從學會了 `UNIQUE` 函數和改良版的 `SUMPRODUCT` 公式後,這個問題幾乎變成一秒鐘就能解決的事,大大提升了我的工作效率。真的非常推薦大家實際操作一下,你會發現 Excel 的世界,原來可以這麼簡單!

Excel如何計算不重複個數