Excel中利用数组公式去除重复数值
来源:网络收集 点击: 时间:2024-08-18A列是源数据,想要去除其中的重复数据,将筛选后的数据放到B列中
我们先想一个思路,然后再用公式去实现。
我们知道Row函数,返回行号;Match函数,返回数据首次在指定区域出现的顺序号;这样我们可以用两个函数返回的结果进行比较,如果是两者相同,那么意味着,这是数据第一次出现,就将他提取出来,如果两者不同,就表示这个数值已经出现过至少一次了,不需要提取。

顺着上面的思路,我们来一步步实现
首先,利用Row函数,将各个数值对应的行号,表示出来。

利用Match函数,将各个数据第一次在数据区域出现的序列数,求出来

利用If函数,对上述两个函数的结果进行比较
如果两者相同,则返回Match函数的结果
如果两个不同,则返回空值

我们需要从上到下按顺序依次提取不重复的数值,上述步骤的结果,可以看到有很多空的单元格,需要将之去除。
这里用到了Small函数,对数据进行从小到大排序并提取

最后,再用Index函数,通过行号,返回数据区域的数值
也就把不重复的数值提取出来了

其实,到上一步就已经完成了,但我们想要一个公式得到结果,而不是分成那么多列。
那么公式如下:
=INDEX($A$1:$A$9,SMALL(IF(MATCH($A$1:$A$9,$A$1:$A$9,0)=ROW($A$1:$A$9),MATCH($A$1:$A$9,$A$1:$A$9,0),),ROW(A1)))
而且是数组公式,需要用Ctrl+Shift+Enter三键来结果公式
为什么要用数组公式呢?我们前面不是都是用的一般的公式么?
这里主要是Small函数的问题,我们知道,我们在用Small函数时,可以选择区域,但当前面的函数结果汇总到一个公式中时,只能通过数组函数,才能得到一个区域,也就才能达到Small函数排序并提取数值的目的。
这里,用到数组函数的,其实是这么一点:
SMALL(IF(MATCH($A$1:$A$9,$A$1:$A$9,0)=ROW($A$1:$A$9),MATCH($A$1:$A$9,$A$1:$A$9,0),),ROW(A1))
通过F9查看公式结果,就能看到,Small前半部分这里是生成了一个序列,作为排序区域,而最后通过行号,返回一个数值,再作为index返回的行号。
如果对数组公式有比较深刻的认识,这里会好理解一些;如果刚接触数组公式,可以多花一些时间去体会。

最后,再利用iferror函数,将错误数据剔除。

数组公式一定要以Ctrl+Shift+Enter三键来结果
index(indirect)+small+if函数是数组公式中最常见的三剑客,学好这个例子,可以一通百通
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1136357.html