Excel中利用数组公式去除重复数值
在一些时候,我们可能需要把一列数据中的不重复数据筛选出来,当然通过Excel自带的筛选功能可以实现,但不能实时同步提取数值,这时候就需要用到公式。在这里简单地分步骤介绍下如何利用数组公式提取不重复的数值。
操作方法
- 01
A列是源数据,想要去除其中的重复数据,将筛选后的数据放到B列中 我们先想一个思路,然后再用公式去实现。 我们知道Row函数,返回行号;Match函数,返回数据首次在指定区域出现的顺序号;这样我们可以用两个函数返回的结果进行比较,如果是两者相同,那么意味着,这是数据第一次出现,就将他提取出来,如果两者不同,就表示这个数值已经出现过至少一次了,不需要提取。
- 02
顺着上面的思路,我们来一步步实现 首先,利用Row函数,将各个数值对应的行号,表示出来。
- 03
利用Match函数,将各个数据第一次在数据区域出现的序列数,求出来
- 04
利用If函数,对上述两个函数的结果进行比较 如果两者相同,则返回Match函数的结果 如果两个不同,则返回空值
- 05
我们需要从上到下按顺序依次提取不重复的数值,上述步骤的结果,可以看到有很多空的单元格,需要将之去除。 这里用到了Small函数,对数据进行从小到大排序并提取
- 06
最后,再用Index函数,通过行号,返回数据区域的数值 也就把不重复的数值提取出来了
- 07
其实,到上一步就已经完成了,但我们想要一个公式得到结果,而不是分成那么多列。 那么公式如下: =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返回的行号。 如果对数组公式有比较深刻的认识,这里会好理解一些;如果刚接触数组公式,可以多花一些时间去体会。
- 08
最后,再利用iferror函数,将错误数据剔除。