Table of contents
这是Excel独特值系列的最后一部分,展示了如何使用公式获得列中的独特/唯一值列表,以及如何针对不同的数据集调整该公式。 你还将学习如何使用Excel的高级过滤器快速获得一个独特列表,以及如何使用Duplicate Remover提取独特行。
在最近的几篇文章中,我们讨论了在Excel中计算和寻找唯一值的不同方法。 如果你有机会阅读这些教程,你已经知道如何通过识别、过滤和复制来获得唯一或不同的列表。 但这有点长,而且到目前为止不是唯一的,在Excel中提取唯一值的方法。 你可以通过使用一个特殊的公式更快地完成,稍后我将向你展示这个和其他一些技巧。
提示:要想在支持动态数组的最新版Excel 365中快速获得唯一值,请使用UNIQUE函数,如上述链接的教程中所述。
如何在Excel中获得唯一值
为了避免任何混淆,首先,让我们对Excel中所谓的唯一值达成共识。 独特的价值 是指在一个列表中只存在一次的值。 例如。
要在Excel中提取一个唯一值的列表,请使用以下公式之一。
阵列 唯一值公式(通过按Ctrl + Shift + Enter完成)。
=iferror(index($a$2:$a$10, match(0, countif($b$1:b1,$a$2:$a$10) + (countif($a$2:$a$10, $a$2:$a$10)1), 0)), " ")
常规 唯一值公式(按回车键完成)。
=iferror(index($a$2:$a$10, match(0,index(countif($b$1:b1, $a$2:$a$10)+(countif($a$2:$a$10, $a$2:$a$10)1) ,0,0), 0)), "")
在上述公式中,使用了以下参考资料。
- A2:A10--来源列表。
- 在这个例子中,我们从B2开始,因此我们在公式中提供了B1(B2-1=B1)。 如果你的唯一列表从C3单元格开始,那么将$B$1:B1改为$C$2:C2。
注意:由于该公式引用的是唯一列表的第一个单元格上面的单元格,通常是列的标题(本例中为B1),所以要确保你的标题有一个唯一的名称,而这个名称不会出现在列的其他地方。
在这个例子中,我们要从A列(更确切地说,是从A2:A20范围)中提取唯一的名字,下面的截图展示了数组公式的作用。
关于该公式的逻辑的详细解释将在另一节中提供,下面是如何使用该公式在你的Excel工作表中提取唯一值。
- 根据你的数据集,调整其中一个公式。
- 在唯一列表的第一个单元格(本例中为B2)中输入公式。
- 如果你使用的是数组公式,按Ctrl + Shift + Enter 。 如果你选择的是普通公式,像往常一样按Enter键。
- 通过拖动填充柄,根据需要向下复制公式。 由于两个唯一值公式都被我们封装在IFERROR函数中,你可以将公式复制到表的末尾,无论提取的唯一值有多少,它都不会使你的数据出现任何错误。
如何在Excel中获得不同的值(唯一的+第1次重复出现的)。
正如你可能已经从本节的标题中猜到的那样。 独特的价值 在Excel中,所有不同的值都在一个列表中,即唯一值和重复值的第一个实例。 例如。
要在Excel中得到一个明显的列表,请使用以下公式。
阵列 不同的公式(需要按Ctrl + Shift + Enter )。
=iferror(index($a$2:$a$10, match(0, countif($b$1:b1, $a$2:$a$10), 0)), " ")
常规 鲜明的公式。
=iferror(index($a$2:$a$10, match(0, index(countif($b$1:b1, $a$2:$a$10), 0, 0)), " ")
在哪里?
- A2:A10是来源列表。
- 在本例中,独立列表从B2单元格开始(它是你输入公式的第一个单元格),所以你引用B1。
在一列中提取不同的值,忽略空白单元格
如果你的源列表中包含任何空白单元格,我们刚才讨论的独特公式将为每个空行返回一个零,这可能是一个问题。 为了解决这个问题,进一步改进公式。
提取数组公式 不同的值,不包括空白 :
=IFERROR(INDEX($A$2:$A$10, MATCH(0, COUNTIF($B$1:B1, $A$2:$A$10&"") + IF($A$2:$A$10="",1,0), 0)), " ")
获取一个忽略数字和空白的独特文本值的列表
以类似的方式,你可以得到一个独特的值的列表 不包括空单元格和带数字的单元格 :
=IFERROR(INDEX($A$2:$A$10, MATCH(0, COUNTIF($B$1:B1, $A$2:$A$10&"") + IF(ISTEXT($A$2:$A$10)=FALSE,1,0), 0)), "")
作为快速提醒,在上述公式中,A2:A10是源列表,B1是不同列表中第一个单元格的正上方。
下面的截图显示了两个公式的结果。
如何在Excel中提取区分大小写的独特值
当处理密码、用户名或文件名等大小写敏感的数据时,你可能需要得到一个大小写敏感的独立值列表。 为此,使用以下数组公式,其中A2:A10是源列表,B1是独立列表第一个单元格上方的单元格。
阵列公式,以获得区分大小写的不同值(需要按Ctrl + Shift + Enter )。
=iferror(index($a$2:$a$10, match(0, frequency(if(exact($a$2:$a$10,transpose($b$1:b1)), match(row($a$2:$a$10), row($a$2:$a$10)), ""), match(row($a$2:$a$10), row($a$2:$a$10) ), 0) ) , "")
独特/与众不同的公式如何运作
本节是专门为那些好奇心强、善于思考的Excel用户编写的,他们不仅想知道公式,还想充分了解它的具体内容。
不言而喻,在Excel中提取唯一和不同的值的公式既不简单也不直接。 但仔细看看,你可能会注意到所有的公式都基于相同的方法--使用INDEX/MATCH与COUNTIF或COUNTIF+IF函数相结合。
对于我们的深入分析,让我们使用提取不同值列表的数组公式,因为本教程中讨论的所有其他公式都是这个基本公式的改进或变化。
=iferror(index($a$2:$a$10, match(0, countif($b$1:b1, $a$2:$a$10), 0)), " ")
首先,让我们抛开明显的IFERROR函数,它的用途只有一个,那就是当你复制公式的单元格数量超过源列表中的不同值时,消除#N/A错误。
现在,让我们来分解一下我们独特公式的核心部分。
- COUNTIF(range, criteria)。 返回一个范围内满足指定条件的单元格的数量。
在这个例子中,COUNTIF($B$1:B1, $A$2:$A$10)根据源列表($A$2:$A$10)中的任何一个值是否出现在不同列表($B$1:B1)中,返回一个1和0的数组。 如果找到该值,该公式返回1,否则-0。
特别是在B2单元格,COUNTIF($B$1:B1, $A$2:$A$10)变成。
COUNTIF("Distinct", {"Ronnie"; "David"; "Sally"; "Jeremy"; "Robert"; "David"; "Robert"; "Tom"; "Sally" })
See_also: Excel:根据单元格值改变行的颜色并返回。
{0;0;0;0;0;0;0;0;0}
因为源列表中没有一个项目( 标准 )出现在 范围 在这种情况下,该函数会寻找一个匹配。 范围 ($B$1:B1)由一个单项组成 - "Distinct"。
MATCH(lookup_value, lookup_array, [match_type])
返回查找值在数组中的相对位置。
在这个例子中,lookup_value是0,因此。
match(0,countif($b$1:b1, $a$2:$a$10), 0)
变成了。
MATCH(0, { 0 ;0;0;0;0;0;0;0;0},0)
并返回
因为我们的MATCH函数得到的第一个值正好等于查找值(正如你所记得的,查找值是0)。
在这个例子中,INDEX($A$2:$A$10, 1)
成为。
INDEX({"Ronnie"; "David"; "Sally"; "Jeremy"; "Robert"; "David"; "Robert"; "Tom"; "Sally" }, 1)
并返回 "Ronnie"。
当公式被复制到下一列时,不同的列表($B$1:B1)会扩展,因为第二个单元格引用(B1)是一个相对引用,根据公式移动的单元格的相对位置而改变。
因此,当复制到单元格B3时,COUNTIF($B$1: B1 , $A$2:$A$10) 改为COUNTIF($B$1: B2 ,$A$2:$A$10),并成为。
COUNTIF({"Distinct"; "Ronnie"}, {"Ronnie"; "David"; "Sally"; "Jeremy"; "Robert"; "David"; "Robert"; "Tom"; "Sally"}), 0)), " ")
并返回。
{1;0;0;0;0;0;0;0;0}
因为在$B$1:B2范围内发现了一个 "Ronnie"。
然后,MATCH(0,{1; 0 ;0;0;0;0;0;0;0},0)返回2,因为2是数组中第一个0的相对位置。
而最后。 index($a$2:$a$10, 2)
返回第二行的值,也就是 "David"。
提示:为了更好地理解公式的逻辑,你可以在公式栏中选择公式的不同部分,并按F9键来查看所选部分的评估结果。
如果你仍然难以弄清这个公式,你可以查看以下教程,详细了解INDEX/MATCH的工作原理:INDEX & MATCH作为Excel VLOOKUP的更好替代方案。
如前所述,本教程中讨论的其他公式也是基于同样的逻辑,只是做了一些修改。
唯一值公式--包含一个更多的COUNTIF函数,该函数将所有在源列表中出现一次以上的项目从唯一列表中排除。 countif($a$2:$a$10, $a$2:$a$10)1
.
忽略空白的区别值公式--这里你添加了一个IF函数,防止空白单元格被添加到区别值列表中。 IF($A$2:$A$13="",1,0)
.
区别文本值的公式忽略了数字--你用ISTEXT函数来检查一个值是否是文本,用IF函数来驳回所有其他的值类型,包括空白单元。 如果(istext($a$2:$a$13)=false,1,0)
.
用Excel的高级过滤器从一列中提取不同的值
如果你不想把时间浪费在弄清独特值公式的奥秘曲折上,你可以通过使用高级过滤器快速得到一个独特值的列表。 详细步骤如下。
- 选择你想从中提取独特值的数据列。
- 切换到 数据 标签> 排序 & 筛选 组,并点击 高级 按钮。
- 检查 复制到另一个位置 单选按钮。
- 在 列表范围 框,验证源范围是否正确显示。
- 在 复制到盒子里 请记住,你只能将过滤后的数据复制到...。 活页 .
- 选择 只有独特的记录
请注意,尽管高级过滤器的选项被命名为" 只有独特的记录 ",它提取了 独特的价值 即唯一值和重复值的第一次出现。
用Duplicate Remover提取唯一和不同的行
在本教程的最后部分,让我向你展示我们自己的解决方案,以寻找和提取Excel表中的独特和独特的值。 这个解决方案结合了Excel公式的多功能性和高级过滤器的简单性。 此外,它还提供了一些独特的功能,如。
- 查找并提取 唯一/不同行 基于一个或多个列的值。
- 查找 , 亮点 ,以及 拷贝 在同一或不同的工作簿中的任何其他位置的唯一值。
现在,让我们看看Duplicate Remover工具的运行情况。
假设你有一个通过合并其他几个表的数据而创建的汇总表。 很明显,该汇总表包含很多重复的行,你的任务是提取在表中只出现一次的唯一行,或包括唯一和第一次重复出现的不同行。 无论哪种方式,通过Duplicate Remover插件,该工作在5个快速步骤中就完成。
- 选择源表中的任何单元格并点击 复制的清除器 上的按钮。 阿博比特数据 选项卡,在 重复计算 组。
重复删除向导将运行并选择整个表。 因此,只要点击 下一页 进入下一个步骤。
- 独特的
- 独特的+1次出现(独特的)。
在这个例子中,我们的目标是提取 唯一的行 在源表中只出现一次,所以我们选择了 独特的 选择。
提示:正如你在上面的截图中所看到的,也有2个选项用于 重复值 如果你需要扣除其他工作表,请记住这一点。
在这个例子中,我们想根据所有3个列的值来寻找唯一的行( 订单号 , 名字 和 姓氏 ),因此我们选择所有。
- 突出独特的价值
- 选择独特的价值
- 在一个状态栏中确定
- 复制到另一个位置
因为我们提取的是唯一行,所以选择 复制到另一个位置 然后指定你想复制它们的确切位置--活动页面(选择 自定义位置 选项,并指定目标区域的顶部单元格)、新工作表或新工作簿。
在这个例子中,让我们选择新的工作表。
喜欢这种快速而简单的方式来获得Excel中的唯一值或行的列表吗? 如果是这样,我鼓励你下载下面的评估版本,并给它一个尝试。 重复删除器以及我们所有其他节省时间的工具都包括在Excel的终极套件。
可用的下载
在Excel中查找唯一值--样本工作簿(.xlsx文件)
Ultimate Suite - 评估版 (.exe 文件)