Table of contents
在这篇文章中,我将展示如何在Microsoft Excel中从多列中找到唯一值。
下载实践工作手册
下载以下Excel文件,以便你在阅读这篇文章时进行练习。
查找多列唯一值.xlsm
在Excel中从多列中寻找唯一值的5种方法
让我们看看这个数据集。 我们有一所名为Glory幼儿园的学校的学生记录。
我们在列中有学生的ID、名字和姓氏。 B , C, 和 D 分别是。
现在我们要整理出学生的独特名字。
方法1:用数组公式从多个列中提取唯一值
i. 使用UNIQUE功能
预防措施。 一致性功能 只适用于 办公室365 .
UNIQUE函数的语法。
=UNIQUE(array,[by_col],[exact_once])
- 接受三个参数,一个叫做 "A "的单元格范围。 阵列 ,以及两个布尔值,称为 by_col 和 确切地说是一次 .
- 返回的唯一值来自 阵列 .
- 如果 by_col 被设置为 为真 的列来搜索唯一的值。 这个参数是可选的。 默认是 是的 .
- 如果 确切地说是一次 被设置为 为真 ,返回只出现一次的值,在 阵列 这个参数是可选的,默认是 失败 .
现在,我们要从这两份文件中提取唯一的值。 姓氏 (专栏 C )和 姓氏 (专栏 D ).
- 首先,选择一个单元格并在那里插入这个公式。 我选择单元格 E5 并在那里输入。
=unique(c5:d16,false,true)
看,我们在两个不同的列中得到了独特的名字。
- 这里我们插入了 by_col 作为 失败 ,所以它没有沿列搜索
- 这里我们插入了 确切地说是一次 作为 为真 ,所以它确实返回了只出现一次的值。
当然,如果你愿意,你可以改变这些布尔值,称为 by_col 和 确切地说是一次 并看看会发生什么。
阅读更多。 Excel VBA从列中获取唯一值(4个例子)
ii. 结合CONCATENATE和UNIQUE函数
刚才,我们在一个单元格中得到了名字,在相邻的单元格中得到了姓氏。 但是,如果有人要求在一个单元格中得到完整的名字,例如,杰克-莫里斯,那么? 使用这些公式中的任何一个。 它们是由以下内容组成的 獨特的 和 连结 职能。
第一个公式。
=unique(concatenate(c5:c16," ",d5:d16),false,true)
替代公式。
或者,你可以用这个-
=UNIQUE(C5:C16&" "&D5:D16,FALSE,TRUE)
看,我们在一列中提取了完整的唯一名称,用空格( )分隔。
阅读更多。 在Excel中查找某一列的唯一值(6种方法)
iii. 使用UNIQUE、CONCATENATE和FILTER函数来提取基于标准的唯一值
现在假设一下,人们想提取ID大于150的学生的唯一名字。 如何做到这一点?
我们将使用 獨特的 和 筛选器 职能。
预防措施。 ǞǞǞ 筛选器 函数只在 办公室365 .
FILTER功能的语法。
=FILTER(array,include,[if_empty])
- 需要三个参数。 一个单元格的范围称为 阵列。 一个名为 "布尔 "的条件 包括 ,还有一个值叫
- 返回来自 阵列 符合《公约》规定的条件的
- 如果任何值的 阵列 并不符合《公约》规定的条件。 包括 ,它返回的值是 if_empty 为它设置。 if_empty 是可选的,默认为 "无结果"。
现在我们想提取ID大于150的学生的唯一名字。
- 因此,我们的公式将是
=UNIQUE(FILTER(C5:D16,B5:B16>150, "无结果"),FALSE,TRUE)
看,我们已经提取了唯一的名字和姓氏。
- 如果你想在一个单元格中提取出完整的唯一名称,请使用此公式--
=UNIQUE(FILTER(CONCATENATE(C5:C16," ",D5:D16),B5:B16>150, "无结果") ,FALSE,TRUE)
阅读更多。 如何在Excel中根据标准提取唯一值
方法2:使用条件格式化突出显示重复的值
让我们来看看这个新的数据集。 我们有三列,但都是同一类型的数据。
我们有光荣幼儿园一些学生的绰号。 现在我们想找出这些学生的独特名字。
我们怎样才能做到这一点呢?
为了方便起见,我们可以使用条件格式化突出显示重复的值。
📌步骤。
- 首先,选择单元格的范围。
- 然后转到 首页> 条件格式化> 突出显示单元格规则> 重复值。
- 你会得到一个名为 重复的价值。
- 从那里选择任何颜色来突出重复的值。 我选择的是绿色。
方法3:使用无数组公式从Excel列中提取唯一值
要使用一个非数组公式,你必须把 误差(IFERROR , LOOKUP。 和 COUNTIF 功能。 要应用该公式,请应用以下步骤。
📌步骤。
- 选择任何单元格。
- 然后插入以下公式-
=iferror(iferror(lookup(2, 1/(countif($f$4:f4,$b$5:$b$11)=0), $b$5:$b$11), lookup(2, 1/(countif($f$4:f4, $c$5:$c$9)=0), $c$5:$c$9) ), lookup(2, 1/(countif($f$4:f4, $d$5:$d$12)=0) , $d$5:$d$12) )
- 在这里,我把它插入到 细胞F5 .
- 然后拖动填充手柄,你会发现独特的名字。
请注意。
在这里,代替专栏的是 B , C, 和 D ,你可以使用你喜欢的。
方法4:使用数据透视表从两个或更多的列中提取一个独特的区别性列表
你也可以使用透视表工具从两个或多个列中创建一个唯一的列表。 应用以下步骤来做到这一点。
📌步骤。
- 新闻 Alt + D .
- 然后按 P 马上,你会得到 透视表和透视图向导 打开了。
- 选择 多种合并范围 和 透视表 按钮。
- 然后点击 下一页 你将搬到 3的步骤2a .
- 选择 为我创建一个单页字段 按钮。
- 然后点击 下一页 你将去 步骤 2b .
- 在 范围 框,选择左边有空栏的单元格范围。
- 这里我选择了单元格 B5至D12 .
- 然后点击 加。 你选择的单元格将被添加到 所有范围 箱子。
- 然后点击 下一页 你将搬到 步骤 3 .
- 在 现有的工作表 框中,写下你想要的单元格中的 透视表 我写道 $F$4.
- 然后点击 完成 你将得到一个创建的透视表。
- 在 选择要添加到报告的字段 部分,无标记 行 , 栏目 , 价值 , 第1页 .
- 然后把支票放在 价值 你将会得到在 透视表 .
方法5:使用VBA代码查找唯一值
最后,你也可以使用VBA代码从数据集中提取唯一的名字。 做到以下几点。
📌步骤。
- 新闻 Alt + F11 在你的工作簿上,打开 VBA 窗口。
- 然后去到 插入 中的选项卡。 VBA 工具栏上。 点击它。
- 从四个选项中,选择 模块 .
你将得到一个新的 模块 窗口。
- 在那里写下以下代码。
Sub Uniquedata() Dim rng As Range Dim InputRng As Range, OutRng As Range Set dt = CreateObject("Scripting.Dictionary") xTitleId = "Select Range" Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8) Set OutRng = Application.InputBox("Output to (single cell): ", xTitleId, Type:=8) For Each rng in InputRng If rng.Value "" Thendt(rng.Value) = "" End If Next OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction. Transpose(dt.Keys) End Sub
这个 场地 帮助我们理解和开发代码。
- 将其保存为 启用Excel Macros的工作簿。
- 然后回到你原来的工作表,按 Alt + F8 .
- 你会得到 宏观 箱子打开了。
- 请选择名称 宏观 然后点击 运转 .
- 在这里,这个名字 宏观 是 统一数据(Uniquedata .
- 输入你的数据范围在 范围 箱子。
- 点击进入 认可 你会得到另一个输入框。
- 输入你想要的第一个单元格的唯一名称。 我输入单元格 F5 .
- 然后点击 好的。 你将从你的数据集中获得独特的名字。
阅读更多。 如何在Excel中从范围中获取唯一值(8种方法)
总结
使用这些方法,你可以在Excel中从具有相同或不同类型数据的多个列中找到唯一值。 如果你有任何进一步的疑问,请给我们留言。 你也可以访问我们的 博客 以了解更多关于MS Excel的各种主题。