EXCEL如何用公式提取一列中的唯一值和不重复值
方法/步骤
-
新建一个空白的EXCEL工作表,而后打开
-
在A列输入人名,人名有重复,要求将唯一值提取到B列
-
首先我们在B2单元格输入公式=INDEX(A$1:A$99,MATCH(0,COUNTIF(B$1:B1,A$1:A$99),0))&"",而后按三键结束,就是同时按住ctrl+shift+enter,将公式转化为数组,而后我们可以看到,第一个人名,就出现在眼前
-
下拉B2公式,我们就将唯一值全部提取了出来放到B列
-
公式解释,首先我们将鼠标放到B2单元格,而后选中COUNTIF(B$1:B1,A$1:A$99),按住F9,我们可以看到,这部分的结果为{1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0,出现这样的结果的原因是因为第一个单元格的计算为在B1单元格内,先计算A1等于B1的个数,而后是A2,而后是A,这样一直计算到A30,形成30个数字,因为姓名值出现一次,所以只有第一个单元格为1,其他全部为0,而后用match函数查出第一次0出现的位置,就是第二个单元格,从而将符合条件数值提取出来
-
我们将鼠标放到B3单元格,而后而后选中COUNTIF(B$1:B1,A$1:A$99),按住F9,我们可以看到,{1;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0,这样提取出来的第一个0值的位置为3,就是第三行的数据
20231230:最近发现另外一种方法
如果你使用的是Excel 2019或者2021版本,可以使用UNIQUE函数从数据源中提取出不重复的记录,而且计算结果能随着数据源的变化自动更新。
UNIQUE函数的用法是:
=UNIQUE(数据区域,返回唯一列/行,返回每个不同项目还是只出现一次的记录)
接下来咱们以Excel 2021为例,来看看这个函数的具体用法:
1、提取一行中的不重复记录
如下图,要从左侧的值班表中,提取出各部门的值班人员名单。
H2输入以下公式,向下复制到H4单元格即可。
=UNIQUE(B2:F2,TRUE)
UNIQUE函数的第二参数使用TRUE,表示在同一行中提取不重复值。
2、提取一列中的不重复值
如下图所示,希望从B列的值班名单中提取出不重复记录。
D2单元格输入以下公式即可。
=UNIQUE(B2:B6)
UNIQUE函数第二参数使用FALSE或者省略参数,表示在同一列中提取不重复值。
3、提取一列中的唯一值
如下图所示,希望从B列的值班名单中提取出仅出现一次的记录。
=UNIQUE(B2:B6,,TRUE)
UNIQUE函数第二参数省略参数,第三参数使用TRUE,表示在同一列中提取仅出现一次的值。
4、计算参赛人数
如下图所示,AB列是参赛名单,有部分人员参加了多个项目,需要计算参赛人数。
D2单元格输入以下公式。
=COUNTA(UNIQUE(A2:A9))
先使用UNIQUE函数提取出不重复的人员名单,再使用COUNTA函数对人员名单计数。
5、按条件提取不重复记录
如下图所示,希望从左侧的值班名单中提取出“A区”的不重复记录。
F2单元格输入以下公式。
=UNIQUE(FILTER(C2:C14,A2:A14="A区"))
首先使用FILTER函数,筛选出所有A区的值班经理名单,再使用UNIQUE函数提取出不重复的记录。
6、中式排名
如下图所示,希望根据C列的比赛成绩计算排名。
D2单元格输入以下公式,得到的是美式排名。
=RANK(C2,C$2:C$9)
美式排名的特点是相同成绩占用名次。如下图中,两个99.5并列第3,之后的95排到了第5名。
E2单元格输入以下公式,得到的是中式排名。
=SUM((UNIQUE(C$2:C$9)>C2)*1)+1
中式排名的特点是相同成绩不占用名次。上图中两个99.5并列第3,之后的95排名为第4。
先使用UNIQUE函数提取出C$2:C$9单元格区域中的不重复记录,再判断去重后的成绩是否大于C2。
SUM函数计算出大于C2的不重复个数,结果加上1就是当前成绩的中式排名。
参考:
https://jingyan.baidu.com/article/046a7b3e959ef3f9c27fa99d.html
https://www.excelhome.net/4848.html