跳至主要内容

如何在 Excel 中统计唯一值:您需要了解的内容

学习使用基础与进阶公式在 Excel 中统计唯一值。了解“唯一值”和“不同值”的区别。
· 8分钟 阅读

使用 AI 探索

在本指南中,我将向您展示如何在 Excel 中统计唯一值。我还会讲到一些特殊情况,例如如何处理大小写敏感,或如何基于一个或多个条件统计唯一值。

想持续精进 Excel 技能,欢迎加入我们的 Excel Fundamentals 技能路径,成为专家。

Excel 中的唯一值与不同值(Distinct)

这两个概念有时会被混淆,但“唯一值”和“不同值”并不是一回事。

  • 不同值(Distinct)指数据集中去重后的各个不同取值。例如,在列表 A, A, B, C, C, D 中,不同值为 A, B, C, D。
  • 唯一值则是指在数据集中只出现一次的值。沿用同一示例,唯一值为 B 和 D(因为 A 和 C 出现了多次)。

在本文前半部分,我将专注于在 Excel 中统计唯一值的不同方法。但如果您其实是想统计不同值(Distinct),也没问题,稍后部分也有相关内容。

在 Excel 中统计唯一值的两种方法

在 Excel 中统计唯一值的常见方法有两种。

如何使用 UNIQUE() 函数统计唯一值

最简单的方法是结合使用 UNIQUE() 函数 和 COUNTA() 函数。UNIQUE() 用于从某个区域提取所有唯一值,而 COUNTA() 用于统计其中有多少唯一值。

COUNTA(UNIQUE(range, false, true))

例如,我在一个小型数据集上应用了下面的公式,它返回了唯一值的个数。

=COUNTA(UNIQUE(A2:A8, false, true))

how to count unique values in Excel

如果改用这样的语法 =COUNTA(UNIQUE(A2:A8)),没有我们设置为 TRUE 的第三个参数,那么返回的将是“不同值”的个数,而不是“唯一值”。将第三个参数设为 TRUE 才会得到唯一值的计数。这两种情况都由 UNIQUE() 实现,刚开始可能会有些混淆。

如何用 SUM() 与 COUNTIF() 统计唯一值

如果您对 UNIQUE() 的细微差别还不太确定,或者您没有 Excel 365,也可以将 SUM() 与 IF() 和 COUNTIF() 组合来统计唯一值。

=SUM(IF(COUNTIF(range, range)=1,1,0))

例如,我的数据位于 A2:A8 区域,想统计唯一值的数量,于是写出以下公式:

SUM(IF(COUNTIF(A2:A8, A2:A8)=1,1,0))

这里 COUNTIF() 会遍历列表,检查每个名字出现的次数。若某个名字仅出现一次,则记为 1;若出现多次,则得到更大的数字。随后,IF() 将结果筛选为仅保留 1,其余都变为 0。最后,SUM() 把所有的 1 相加,得到唯一值的总数。

how to count unique values in Excel using formulas

如何按数据类型统计唯一值

有时数据集包含混合数据类型,需要分别分析。起初看似麻烦,但在 Excel 中可以做到。下面介绍两种方法——一种用于统计唯一文本值,另一种用于统计唯一数字。

如何统计唯一文本值

若要统计唯一的文本值,可组合使用 ISTEXT()、COUNTIF() 和 SUM()。ISTEXT() 用于检测某值是否为文本,COUNTIF() 统计每个值出现的次数,SUM() 汇总唯一文本条目。

我在示例数据上应用了如下公式,立刻得出了唯一文本值的数量。

=SUM(IF(ISTEXT(A2:A9)*COUNTIF(A2:A9,A2:A9)=1,1,0))

How to Count unique text values in Excel

如何统计唯一数值

如果您想统计唯一的数字而非文本,可使用相同公式,但将 ISTEXT() 换成 ISNUMBER()。

ISNUMBER() 只会考虑数值,而 COUNTIF() 与 SUM() 负责判定是否唯一。我在同一数据上稍作修改,即可仅统计唯一数值的数量:

=SUM(IF(ISNUMBER(A2:A9)*COUNTIF(A2:A9,A2:A9)=1,1,0))

How to Count unique numeric values in Excel

如何在 Excel 中按条件统计唯一值

现在我们已掌握统计唯一值的基本方法,来看看一些进阶技巧。

如何基于条件统计唯一值

要基于特定条件统计唯一值,我使用如下语法:

=IFERROR(ROWS(UNIQUE(FILTER(range, criteria_range=criteria))), 0)

在这个公式中,FILTER() 按条件筛选区域,UNIQUE() 去重,ROWS() 计数,IFERROR() 则在未找到匹配时返回 Not Found,以避免报错。

假设我有一份员工及其部门的列表,需要统计某部门有多少唯一员工。我将使用以下公式:

=IFERROR(ROWS(UNIQUE(FILTER(A2:A20, B2:B20=F1))), "Not Found")

其中,A2:A10 表示要筛选的员工姓名范围,B2:B10=F1 用于检查员工是否属于写在 F1 中的部门。

How to Count unique values with a condition in Excel

如何基于多列统计唯一行

如果我想统计某部门且薪资低于 50,000 美元的唯一员工数量,我会使用这个公式:

=IFERROR(ROWS(UNIQUE(FILTER(A2:A10, (B2:B10=F1) * (C2:C10>F2)))), "Not Found")

其中,A2:A10 表示员工姓名范围,B2:B10=F1 用于检查员工是否属于写在 F1 中的部门,而 C2:C10>F2 则用于检查薪资是否小于 F2 中给定的金额。

How to Count unique rows based on columns in Excel

如何处理大小写敏感的唯一计数

默认情况下,Excel 对大小写敏感。例如,Apple 和 APPLE 被视为不同。为识别此类情况,我会创建一个辅助列,使用以下公式:

=IF(SUM((--EXACT($A$2:$A$11,A2)))=1,"Unique","Duplicate")

接着,为得到唯一值的数量,我这样使用 COUNTIF() 函数:

=COUNTIF(B2:B11,"Unique")

Counting case-sensitive unique values in Excel.

改为统计不同值(Distinct)的方法

最后一节,如果您确实是想统计不同值(Distinct),我会展示几种方法。在此之前,先看一张表以直观比较差异:

CriteriaUnique ValuesDistinct Values
DefinitionValues that appear only once in a dataset.All different values in a dataset, including one occurrence of each duplicate.
Duplicates included?No, duplicates are excluded.Yes, but only one instance of each value is kept.
ExampleIn [1, 2, 2, 3, 4], unique values are [1, 3, 4].In [1, 2, 2, 3, 4], distinct values are [1, 2, 3, 4].
Use caseFinds values that occur only once.Gets a list of all distinct values.

如何用 COUNTIF() 与 SUM() 统计不同值

在 Excel 中统计不同值,可以结合使用 COUNTIF() 与 SUM()。COUNTIF() 会检查每个值在给定区域中出现的次数,随后 SUM() 将 COUNTIF() 返回值按倒数求和,得到不同条目的总数。

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

比如我想统计 A2:A8 区域中的不同值,我输入以下公式:

=SUM(1/COUNTIF(A2:A8, A2:A8))

其中,COUNTIF() 会检查列表中每个值出现的次数。

1/COUNTIF(A2:A8, A2:A8) 会将 1 除以每个值出现的次数。例如,某个数字出现两次,那么每个实例都变为 0.5(1/2);出现三次时则为 0.33(1/3)。

由于我们不需要这些分数,可以使用 SUM() 或 SUMPRODUCT() 将它们相加。每个重复项对应的分数相加为 1,而不同值保持为 1(1/1 = 1):

=SUMPRODUCT(1/COUNTIF(A2:A8, A2:A8))

Count unique values using COUNTIF() and SUM() functions in Excel.

如何用数据透视表统计不同值

Excel 2013 与 Excel 2016 在数据透视表中内置了“统计不同值”的功能。要使用它,先选择数据创建数据透视表:转到插入并选择数据透视表。弹出对话框——在其中选择现有工作表,并勾选将此数据添加到数据模型。

creating a PivotTable to count the unique values in Excel.

接着,将所需列拖到值区域。此处我将水果列拖入,因为我想统计其不同值。然后在下拉菜单中点击值字段设置。弹出窗口中选择不同计数。您也可以为该列设置自定义名称(可选)。

Count unique values using PivotTable in Excel.

如何用高级筛选统计不同值

如果您不想使用公式,可以改用高级筛选。

在本例中,我有一个数据集,想用高级筛选找出不同值。首先选择要查找的区域,然后转到数据选项卡,点击高级。

在高级筛选对话框中,选择复制到其他位置,并在复制到字段中输入希望列表出现的目标单元格。然后勾选选择不重复的记录并点击确定。

获得不同值列表后,我再用 ROWS() 函数计算这些值的数量:

=ROWS(D2:D5)

尽管下图中的选项写的是“选择不重复的记录”,它实际上提取的是不同值(Distinct)。

Count distinct values using an Advanced Filter option

如何用 VBA 宏统计不同值

如果您需要反复统计不同值,可以使用 VBA(Visual Basic for Applications),一次编写代码,之后每次按名称调用函数即可自动完成。

使用方法:按 Alt + F11,在插入选项卡下选择模块。会新建一个模块,您可以将代码粘贴至此。

下面是我用于统计不同值的代码:

Function CountUnique(rng As Range) As Integer
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    Dim cell As Range
    For Each cell In rng
        If Not dict.exists(cell.Value) And cell.Value <> "" 

Then,
            dict.Add cell.Value, Nothing
        End If
    Next cell
    
    CountUnique = dict.Count
End Function

Create VBA editor to find unique values in Excel.

然后按 Ctrl + S 保存,按 ALt + Q 关闭 VBA 编辑器。现在,您可以在工作表任意位置调用此自定义函数并指定要查找不同值的范围。我的函数名是 CountUnique(),每次用指定范围调用它时,都会返回计数值:

=CountUnique(A2:A8)

Count unique values using VBA editor in Excel.

结语

本文介绍了用于统计唯一值与不同值的关键公式、数据透视表以及 VBA 宏。各方法各有优劣,您应根据自身需求与 Excel 版本进行选择。

若想进一步提升 Excel 技能,欢迎查看我们的 Excel Fundamentals 技能路径与 Data Preparation in Excel 课程。

Laiba Siddiqui

作者

Laiba Siddiqui

我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。

FAQs

如何在统计唯一值时排除空白?

您可以使用以下公式:

(UNIQUE(FILTER(range, range<>"")))

其工作原理如下:

  • FILTER() 会筛除空白单元格。

  • UNIQUE() 会去除重复值。

  • COUNTA() 用于统计唯一的非空值。

如何使用条件格式高亮显示唯一值?

选中数据范围,转到 开始 > 条件格式 > 突出显示单元格规则 > 重复值。在弹出的窗口中,从下拉菜单选择 唯一,然后点击 确定。

可以通过“删除重复项”选项提取唯一值吗?

可以,您可以使用 删除重复项 选项来提取唯一值。操作步骤如下:

  • 选择范围,转到 数据 选项卡并点击 删除重复项。
  • 在弹出窗口中,勾选要查找重复项的列。
  • 点击 确定 后,Excel 会删除重复值,仅保留唯一值。
在 Excel 中统计唯一值的最快方式是什么?

最快的方法是将 UNIQUE() 与 COUNTA() 结合使用。这适用于 Excel 365 及更高版本。如果没有 Excel 365,请改用 SUM()、IF() 和 COUNTIF()。

能否基于多个条件统计唯一值?

可以,您可以将 FILTER() 函数与多个条件一起使用。这样就能统计同时满足所有指定条件的唯一值。

主题