在Microsoft Excel列表中计算不同值的9种方法

在Microsoft Excel列表中计算不同值的9种方法

您想计算 Excel 列表中的不同值吗?

在 Excel 中执行任何数据分析时,您通常需要了解一列中不同项目的数量。此统计数据可以为您提供有用的数据概览,并帮助您发现错误或不一致之处。

这篇文章将向您展示计算列表中不同项目数量的所有方法。获取此文章中的示例工作簿副本以继续学习。

推荐:Power Pivot添加到Microsoft Excel的4种方法

独特与独特

条款 独特的清楚的 经常被错误地随意互换。这些术语之间有很大区别。

清楚的 表示不同的值。此列表中的不同值 {A, B, B, C}{A, B, C}。此例中的计数为 3。

独特的 表示仅出现一次的值。列表中的唯一值 {A, B, B, C}{A, C}。此例中的计数为 2。

💡 提示:如果你真的在寻找 唯一项目数

使用 COUNTIFS 函数计算不同值

计算某个范围内唯一值的第一种方法是使用 计数 功能。

计数 函数允许您根据一个或多个条件来计算值。

在Microsoft Excel列表中计算不同值的9种方法
在Microsoft Excel列表中计算不同值的9种方法
= SUM ( 1 / COUNTIFS ( B5:B14, B5:B14 ) )

上述公式将计算范围内值列表中不同项目的数量 B5:B14

计数 函数用于查看每个值在列表中出现的次数。当您反转此计数时,您会得到一个分数值,该分数值对于列表中的每个不同值加起来为 1。

然后函数将所有这些分数相加,总数就是列表中不同项目的数量。

💡 提示:如果您使用的是旧版本的 Excel,不支持数组公式,则需要使用以下公式输入 Ctrl + 转移 + 进入

使用 UNIQUE 函数计算不同值

计算列表中不同项目的数量的另一种公式方法是使用动态数组函数。

但是,这些仅适用于 Microsoft 365 版 Excel。

= COUNTA ( UNIQUE ( B5:B14 ) )

上述公式将返回列表中所有不同项目的数量 B5:B14

独特的 函数返回列表中的所有不同值。然后使用 康塔 功能。

推荐:多用途Elementor WooCommerce WordPress主题ShoppyStore 

使用高级过滤器计算不同值

高级过滤器 是一项允许您添加基于多个字段的复杂逻辑来过滤列表的功能。

这也可以用于过滤列表中的不同值。

然后,您可以使用 SUBTOTAL 函数仅计算过滤列表中可见的项目。

以下是使用高级过滤器计算不同项目的方法。

= SUBTOTAL ( 103, B5:B14 )
  1. 添加以上内容 小计 函数到您想要计数值的范围。 103 论点告诉 小计 函数仅计算一定范围内的可见单元格。
  1. 选择要计数不同值的数据列。
  1. 前往 数据 标签。
  2. 点击 先进的 命令 排序和过滤 丝带 的一部分。

这将打开高级过滤器菜单。

  1. 选择 就地过滤列表 选项来自 行动 部分。
  2. 列出范围 应该是之前在步骤 2 中选择的值的范围。如有必要,您可以更新它。
  3. 检查 仅限唯一记录 选项。尽管它说的是唯一的,但它实际上会返回过滤器中的不同值。
  4. 好的 按钮。

该列表经过过滤,隐藏所有重复值和 小计 然后只会计算列表中不同的项目。

使用数据透视表计算不同值

您可以从数据透视表中获取不同值的列表。

当您在数据透视表中按行汇总数据时,行区域将仅显示不同的项目。然后,您可以使用状态栏统计信息或 康塔 功能。

您首先需要 使用数据创建数据透视表 您想要获得不同的计数。

  1. 选择数据。
  2. 前往 插入 标签。
  3. 点击 数据透视表 命令。

这将打开 来自表格或范围的数据透视表 菜单,您可以在其中选择要放置新数据透视表的位置。

  1. 选择新数据透视表的位置。
  2. 好的 按钮。

这将创建一个新的空白数据透视表。当您选择此数据透视表内的任意单元格时,您将看到数据透视表字段列表出现在工作簿的右侧。

  1. 将您想要计算不同项目的字段拖到数据透视表的行区域。

这会在数据透视表中创建一个不同项目的列表。现在您可以选择这些项目,计数将显示在状态栏区域中。

推荐:7个技巧可以帮助Shopify商店大规模销售

使用数据透视表数据模型计算不同值

虽然使用数据透视表可以得到数据中不同项目的列表,但它并不适用于计算结果。还有一个额外的步骤,即选择项目并在状态栏中获取计数。

但是有一种方法可以使用数据透视表并返回数据透视表的值区域内不同项目的数量。

当您使用数据透视表数据模型功能时,它将在字段设置中显示一个额外的摘要类型,用于计算不同的值。

您将像以前一样插入数据透视表,但此过程中还有一个额外的步骤。

  1. 检查 将此数据添加到数据模型 选项中的 来自表格或范围的数据透视表 菜单。
  1. 将字段拖到 价值观 面积。它应该默认为计数。
  2. 左键单击该字段。
  3. 选择 值字段设置 从菜单选项中。

这将打开 值字段设置 菜单。

  1. 前往 汇总值依据 标签。
  2. 选择 不同计数 选项中的 汇总值字段 列表。仅当数据已添加到数据模型时才会显示此选项。
  3. 好的 按钮。

就是这样!项目的不同计数现在出现在数据透视表中。

这是更加通用的,因为您现在可以通过在行区域中添加字段来获取另一个分类分组中的不同计数。

例如,数据透视表中的每个值现在都是基于品牌的汽车型号的不同计数。

计数不同值删除重复项

删除重复项 该功能将允许您摆脱列表中任何重复的值。

然后,您可以计算结果以获得不同的项目数。

  1. 选择要计数的项目范围。
  2. 前往 数据 标签。
  3. 点击 删除重复项 命令。

这将打开 删除重复项 菜单。

  1. 在列表中选择一列
  2. 好的 按钮。

这将删除列表中的重复项,并会弹出一个窗口告诉您删除了多少项以及剩余多少项。这是列表中不同项的数量!

📝 笔记:这将改变数据,因此请确保仅在源数据的副本上执行此命令,以免丢失原始数据。

推荐:快速加载和高点击率的AdSense主题Superfast 

使用 Power Query 列分布计算不同值

Power Query 是导入和转换数据的绝佳工具。

在构建查询时,它甚至会向您显示有关列分布视图中数据的有用汇总统计信息。这包括不重复计数。

您首先需要将数据加载到 Power Query 编辑器中才能看到这些功能。

  1. 选择数据。
  2. 前往 数据 标签。
  3. 选择 来自表/范围 查詢選項。

这将打开 Power Query 编辑器,您可能已经看到具有不同计数的列分布功能。

如果你没有看到这个,你可以从 看法 选项卡。

  1. 前往 看法 标签。
  2. 检查 列分布 选项中的 数据预览 部分。

💡 提示:将鼠标光标悬停在计数上,您将看到百分比分布!

推荐:在Microsoft Excel中反转文本的5种方法

使用 Power Query 转换选项卡计算不同值

列分布功能对于快速概览数据非常方便,但您可能希望从 Power Query 将该值返回到 Excel。

这也是有可能的。

  1. 选择要计数的列。
  2. 前往 转换 标签。
  3. 点击 统计数据 命令 数字列 部分。
  4. 选择 计数不同值 选项。

这将从您的列中返回一个单一的标量值,即该列中不同项目的数量。

您可以将其重新加载到 Excel 中,它将加载到单列单行表中。转到 选项卡并点击 关闭并加载 按钮。

使用 VBA 计算不同值

Excel 中没有预建函数可以计算某个范围内不同项目的数量。

但是,您可以为此目的构建自己的自定义 VBA 函数。

Alt + F11 键盘快捷键打开 Visual Basic 编辑器。您可以在此处放置用户定义函数的代码。

前往 插入 菜单并选择 模块 为您的代码创建新模块的选项。

Function COUNTDISTINCTVALUES(rng As Range) As Integer
Application.Volatile
Dim c As Variant
Dim distinctValues As New Collection

On Error Resume Next
For Each c In rng
    If Not (IsEmpty(c)) Then
        distinctValues.Add c, CStr(c)
    End If
Next c
COUNTDISTINCTVALUES = distinctValues.Count
End Function

将上述代码复制并粘贴到模块中。

此代码将创建一个名为的新函数 计数不同值 它可以像其他函数一样在工作簿中的任何位置使用。

将循环遍历传递的范围中的每个单元格。如果单元格不为空,则将单元格中的值添加到集合对象中。

集合只允许添加不同的值,因此最终结果将是仅包含来自您的范围的不同值的集合。

然后将集合中的项目数作为函数输出返回!

= COUNTDISTINCTVALUES ( B3:B12 )

然后,上述公式将返回范围内值的不同计数 B3:B12

使用 Office 脚本计算不同值

办公脚本是获取选定范围的不同计数的另一种方法。

您可以创建一个脚本来计算活动范围内的不同项目。

前往 自动化 选项卡并选择 新脚本 选项。

这将打开 代码编辑器

function main(workbook: ExcelScript.Workbook) {
    let rng = workbook.getSelectedRange();
    let rngValues = rng.getValues();
    let arrayValues = rngValues.reduce((a, value) => a.concat(value), []);
    let distinctValues = new Set(arrayValues);
    console.log(distinctValues.size);
};

添加上述代码并按 保存脚本 按钮。

此代码从工作表中选定的范围获取值。然后,它会使用 Reduce 函数将其转换为一维数组。

然后将此一维数组添加到 集合还具有只允许不同值的属性,因此 distinctValues 设置将只包含来自所选范围的不同值。

项目的数量按大小进行计算,并将其返回到控制台日志,以提供不同值的数量。

结论

有多种选项可用于计算列表中不同项目的数量。

公式解决方案非常适合直接在工作表中动态显示实时结果。其他功能(例如高级筛选或删除重复项)仅适用于一次性使用。

如果您已经在数据处理中使用数据透视表或 Power Query,那么在这些工具中获取不同计数是一个自然的选择。

对于任何其他情况,或作为更大自动化过程的一部分,自定义 VBA 或 Office 脚本代码解决方案可能是最好的。

你知道这些方法吗?请在评论中告诉我!

推荐:提高WooCommerce网站速度插件Disable Bloat for WordPress &  WooCommerce


发表评论