在Microsoft Excel中计算唯一值的8种方法

infoxiao

在microsoft Excel中计算唯一值的8种方法

在Microsoft Excel中计算唯一值的8种方法

您想计算 Excel 数据中唯一值的数量吗?

在 Excel 中执行数据分析时,了解列中唯一项目的数量可以为您提供有关数据的宝贵概览。

该统计数据可以帮助您快速识别错误或不一致之处,因为有时只出现一次的值可能是异常值。

本篇文章将向您展示如何在 Excel 中获取唯一值的数量。获取本篇文章中使用的示例文件副本并继续操作!

推荐:修复Microsoft帐户登录错误AADSTS7000112应用程序被禁用

独特 (Unique) 与 独特 (Distinct):有什么区别?

术语“唯一”经常被误认为是“独特”。它们的含义截然不同,会导致不同的计数。

唯一{A, B, B, C, C, D}值是指在列表中仅出现一次的值。列表中的唯一值为{A, D},计数为 2。

不同值是不同的值的完整集合。列表中的不同值为。本例中的计数为 4 {A, B, B, C, C, D}{A, B, C, D}

 提示:如果您确实想了解不同项目的数量,请查看此帖子。

使用 COUNTIFS 函数计算唯一值

COUNTIFS函数允许您计算一定范围内满足一组条件的项目数。

这可用于计算列表中唯一项目的数量。

在Microsoft Excel中计算唯一值的8种方法
= SUM ( 1 * ( COUNTIFS ( B5:B14, B5:B14 ) = 1 ) )

上述公式将计算范围B5:B14中唯一项目的数量。

countifs array
= COUNTIFS ( B5:B14, B5:B14 )

COUNTIFS函数将返回每个项目在范围内出现的次数。由于唯一项目仅出现一次,因此它们的计数为 1。

countifs array equal 1

当您测试它是否等于 1 时,它会返回一个TRUEFALSE值的数组,其中TRUE值将表示该项目是唯一的。

countifs array converted to 1 and 0

将此数组乘以 1,它会将TRUE值转换为 1,将FALSE值转换为 0。

将其相加即可得到唯一物品的数量!

 注意:对于没有动态数组的旧版本 Excel,您可能需要使用CtrlShift+输入此公式。Enter

使用 UNIQUE 函数计算唯一值

UNIQUE函数专门用于从列表中获取不同或唯一值的列表。

这可以与COUNTA函数结合使用来计算唯一值的数量。

unique and counta formula for count
= COUNTA ( UNIQUE ( B5:B14, FALSE, TRUE ) )

上述公式将计算B5:B14范围内的唯一项目。

UNIQUE函数返回唯一值列表。此版本的UNIQUE函数使用第二和第三个可选参数,分别设置为FALSETRUE

  • 第二个参数设置为FALSE,并告诉UNIQUE函数从数组输入中返回唯一的行。
  • 第三个参数设置为TRUE,并告诉UNIQUE函数从输入数组中返回恰好出现一次的项目。

然后使用COUNTA函数计算UNIQUE函数返回的项目数。

使用条件格式计算唯一值

条件格式是一种很好的直观识别满足给定规则的数据的方法。这些单元格可以用填充颜色突出显示。

有一个条件格式规则可用于突出显示列表中的唯一值。

然后,您可以根据单元格颜色过滤列表,以仅显示列表中的唯一值。

然后计数就变得简单了。您可以使用SUBTOTAL函数仅计数可见单元格,也可以从状态栏获取计数。

select column and go to home tab
  1. 选择要计算唯一值的值范围。
  2. 转到“主页”选项卡。
highlight cells rules duplicate values
  1. 单击功能区“样式”部分中的“条件格式”命令。
  2. 选择突出显示单元格规则选项。
  3. 从子菜单选项中选择重复值选项。
duplicate values menu
  1. 重复值菜单选项中选择唯一
  2. 选择任意颜色选项。请确保您尚未在数据中使用任何这些颜色。
  3. “确定”按钮将条件格式规则应用到您选择的范围。
highlighted unique values

现在您将看到所有仅出现一次的值在您的范围内突出显示。

subtotal function to count visible unique values
=SUBTOTAL(103,B5:B14)
  1. 在工作表中的某个位置添加上述SUBTOTAL公式,以计算范围内的可见单元格
add filters from data tab

您现在可以基于这些彩色单元格进行过滤,以仅获取SUBTOTAL计数中的唯一项目。

  1. 选择范围。
  2. 转到“数据”选项卡。
  3. 单击“过滤器”命令可将过滤器切换添加到范围。

 提示:您还可以使用CtrlShift+L键盘快捷键将过滤器切换添加到范围。

filter by color to show only unique values
  1. 单击过滤器切换按钮。
  2. 选择按颜色过滤选项
  3. 选择用于突出显示唯一值的颜色。
filtered result with subtotal count of uniques

现在,您已经拥有了由SUBTOTAL函数给出的数据中唯一值的计数。

推荐:如何在Excel中创建数据库

使用数据透视表计算唯一值

数据透视表是汇总大量数据的绝佳工具。它们允许您以多种方式聚合字段,包括计数结果。

这意味着您可以计算列表中的项目数并显示每个项目的数量。

然后,您可以在数据透视表上使用值过滤器将结果过滤为计数为 1 的结果。

这将仅显示唯一的项目,并且数据透视表的总计将是数据集中唯一的项目。

首先,您需要根据数据集创建一个数据透视表。

insert pivot table from insert tab

添加数据透视表的方法如下。

  1. 选择数据。
  2. 转到“插入”选项卡。
  3. 选择数据透视表选项。
select location for the pivot table
  1. 选择新工作表现有工作表作为新数据透视表的位置。
  2. “确定”按钮创建数据透视表。
add field to rows and values area of pivot table
  1. 在数据透视表字段窗格的区域中添加要计数的字段。
  2. 在数据透视表字段窗格的区域中添加要计数的字段。

当您将文本字段添加到区域时,它将默认为Count类型的聚合。

现在您应该会看到行中所有项目的列表以及这些项目的值数量。任何值为 1 的项目都是数据中唯一的项目。

apply value field filter to pivot table
  1. 单击行的排序和过滤切换。
  2. 选择值过滤器选项。
  3. 选择“等于”选项。
value filter menu
  1. 选择左侧的“计数”字段。
  2. 在右侧输入值1 。
  3. 按下“OK”按钮。
filter value results with unique values

这将仅过滤那些计数值为 1 的项目的数据透视表,因此仅显示唯一项目。现在总计将显示唯一项目的总数!

使用 DAX 度量计算唯一值

常规数据透视表的“值”区域可用的聚合类型相当有限,但您可以使用数据模型功能来创建更高级的计算。

这样,您就不需要过滤数据透视表来计算唯一值,只需通过数据透视表的值区域中的公式即可完成。

add to data model for pivot table

创建数据透视表时,请确保启用数据模型。

  1. 选中“从表或范围菜单的数据透视表将此数据添加到数据模型”选项。

这将允许您使用 DAX 公式语言为数据透视表的区域创建度量。

right click to add measure
  1. 右键单击数据透视表字段窗格中的表。
unique count measure

这将打开测量编辑器。

  1. 为新度量命名,例如“ Unique Count”
=VAR mySummary =
    SUMMARIZE (
        Range,
        Range[Make],
        "Unique", IF ( COUNTA ( Range[Make] ) = 1, 1, 0 )
    )
RETURN
    SUMX ( mySummary, [Unique] )
  1. 将上述公式添加到公式区域。
  2. “确定”按钮将该度量添加到您的数据模型。
add measure to values area of pivot table
  1. 单击并将字段拖到“行”区域。
  2. 单击新度量并将其拖到区域。

这将使用SUMMARIZE函数创建一个变量。这将通过Make列汇总数据,并使用计算创建一个名为Unique 的聚合列IF ( COUNTA ( Range[Make] ) = 1, 1, 0 )。对于唯一项,将显示 1,否则将显示 0。

然后使用 SUMX 函数对汇总的虚拟 mySummary 表变量进行迭代并对Unique求和。

pivot table with dax measure result

当字段项具有唯一值时,数据透视表将显示 1,否则将显示 0。总计还将反映唯一项的总数。

推荐:WordPress网站分析插件Independent Analytics

使用 Power Query 列分布计算唯一值

Power Query 将在查询编辑器中向您显示有关数据的预览统计信息。

这包括在数据预览中显示每列的唯一项目数。

get data in power query with from table range query

下列是将数据放入 Power Query 编辑器的方法。

  1. 选择数据。
  2. 转到“数据”选项卡。
  3. 选择“从表/范围”命令。
unique values in column distribution

这将打开 Power Query 编辑器,您将看到数据的预览。您还应该在每列的顶部看到一个唯一计数。

enable the column distribution from view tab

如果您没有看到这些列分布统计信息,那么您可以从“查看”选项卡中启用它们。

  1. 转到Power Query 编辑器中的“视图”选项卡。
  2. 勾选列分布选项。

使用 Power Query 转换计算唯一值

您还可以通过几个数据转换步骤获取 Power Query 中项目的唯一计数。

您可以按汇总计数对数据进行分组,以查找一次出现的所有项目。

您可以根据计数为 1 的分组项目来过滤结果。

然后,当您计算这些过滤结果时,您将从数据中获得唯一项目的数量。

group by in transform tab

以下是对数据进行分组的步骤。

  1. 转到“变换”选项卡。
  2. 单击表格部分中的分组依据命令。
group by and count rows
  1. 选择基本选项。
  2. 选择要计算唯一值的列。
  3. 操作选择“计数行”选项。
  4. 按下“OK”按钮。

这将创建一个新的数据表,其中包含每个项目及其相应的项目数量。

filter toggle number filter equals

现在您可以过滤这些数据。

  1. 单击计数列中的过滤器切换按钮。
  2. 选择数字过滤器选项。
  3. 选择“等于”选项。
filter rows menu
  1. 在过滤行菜单中输入 1 。
  2. 按下“OK”按钮。
count rows in transform tab

现在您可以计算结果了。

  1. 转到“变换”选项卡。
  2. 单击“计数行”命令。

这将为您计算唯一项的数量!您将在此处获得一个值,然后可以将其加载回 Excel 或在其他查询中使用它。

使用 VBA 计算唯一值

由于现在有可以计算唯一值的 Excel 函数,因此一种解决方案就是构建自己的函数。

您可以使用 VBA 代码创建用户定义函数。您可以像使用网格中的任何其他函数一样使用它,与以前的公式解决方案相比,它将简化公式结构。

转到“开发人员”选项卡,然后单击“Visual Basic”命令以打开 Visual Basic 编辑器。如果您在功能区中没有看到“开发人员”选项卡,也可以按Alt+F11键盘快捷键直接打开 Visual Basic 编辑器。

vba code with count unique function

现在您需要创建一个新模块来放置您的代码。转到Visual Basic 编辑器的“插入”选项卡,然后从菜单中选择“模块”选项。

Public Function COUNTUNIQUEVALUES(rng As Range) As Integer

uniqueCount = 0

For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count
        If Application.WorksheetFunction.CountIfs(rng, rng.Cells(i, j)) = 1 Then
            uniqueCount = uniqueCount + 1
        End If
    Next j
Next i

COUNTUNIQUEVALUES = uniqueCount

End Function

将以上代码粘贴到模块中。

这使用该Application.WorksheetFunction方法从工作表访问COUNTIFS函数并在代码中使用它来计算唯一项目的数量。

如果COUNTIFS函数中某个项目的计数为 1,则唯一项目的计数uniqueCount将增加 1。

countuniquevalues custom vba function
= COUNTUNIQUEVALUES ( B5:B14 )

现在,您可以使用上述公式来计算范围B5:B14中的唯一值。

使用 Office 脚本计算唯一值

使用代码计算唯一值的另一种选择是使用 Office 脚本。

您可以创建一个 Office 脚本,允许您选择工作表中的某个范围并返回仅出现一次的项目的数量。

new office script for count unique values

转到“自动化”选项卡并选择“新建脚本”选项。这将打开 Office 脚本代码编辑器,您可以在其中编写代码。

office script code editor with script to count uniques
function main(workbook: ExcelScript.Workbook) {

  let selectedRange = workbook.getSelectedRange();
  let selectedValues = selectedRange.getValues();
  let rowHeight = selectedRange.getRowCount();
  let colWidth = selectedRange.getColumnCount();

  var allItems: (string | number | boolean)[] = [];
  var uniqueItems: (string | number | boolean)[] = [];

  //Loop through selected range and add values
  //to 1 dimensional array
  for (let i = 0; i 

将上述代码粘贴到代码编辑器并按保存脚本按钮。

现在,您可以在工作表中选择一个范围,然后按代码编辑器中的“运行”按钮。代码将运行并在控制台日志输出中返回计数。

此代码循环遍历所选范围内的所有单元格,并将它们添加到名为的一维数组中allItems

然后它将循环遍历数组中的所有项目allItems,并使用此方法检查它是否是重复的项目indexOf

indexOf方法查找某项首次出现的数组索引号。诀窍在于使用此方法查找当前项的下一个索引。如果没有下一个索引,则返回indexOf-1,并且该项是唯一的!

然后将唯一的项目添加到另一个名为的数组中uniqueItems

然后使用长度uniqueItems方法在控制台日志中返回数组中项目的数量。

结论

Excel 中没有专门用于查找列表中唯一项数的功能。但有很多有趣的方法可以获取此信息。

COUNTIFS或UNIQUE公式解决方案可能是最简单、最动态的选项。其他功能(如条件格式和过滤器)可能不太适合

对于涉及重复分析的情况,数据透视表或 Power Query 是不错的选择。

可以构建自定义的 VBA 用户定义函数解决方案,使网格中的公式更易于实现。

也可以使用 Office 脚本,但需要输出到控制台日志或网格中预定的单元格。

推荐:如何在Excel中按颜色求和(公式和VBA)

相关文章

如何在谷歌浏览器中进行安全检查

Microsoft Edge与Mozilla Firefox

如何修复Windows 10/11中魔兽世界的致命异常错误132 (0x85100084)

Chrome停止自动播放音频和视频的5种方法

发表评论