Excel之提取唯一值

论坛 期权论坛 期权     
微速助   2019-7-14 16:37   2755   0


如何在excel中从一堆重复的数据中提取唯一值呢?或者是删除重复值呢?
下面介绍两个方法,以供参考。
方法一:暴力删除
在excel的数据选项卡中有一个删除重复值,直接选中我们的数据列然后点击这个就可以把重复值完全删除了。




当然,这些都是初级用法,如果有的时候需要直接让excel自动获取某一列数据的唯一值,那就需要用到下面这个方法了。


方法二:公式法
先来看一下公式(假设有重复的数值在A列):
=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$1000&"",$A$2:$A$1000&"",0)=ROW($2:$1000)-1,ROW($2:$1000),4^8),ROW(1:1)))&""
因为这个是一个数组公式,所以将此公式填写在对应的单元格后,需要按下CTRL+Shift+Enter三个组合键才能正确的生效。
是不是很复杂呢?没关系,下面我们抽丝剥茧一层一层来看。



首先,整体讲解一下.这个公式要从内往外看,一层一层的来看。
先由最内层(黄色)的match函数是获取当前数据第一次出现的行号,然后再用row函数获取当前行数,再由外层(红色)的if函数进行判断,如果当前行数等于第一次出现的行号(相等是第一次出现),则返回当前行号,否则则返回最大行号(4^8=65536)。而后,再由外层(蓝色)的small函数对行号取得的行号进行排序(为了使数据保持连续)最后再由最外层(绿色)的index函数获取对应行号的值。
至此,整个公式的理论过程介绍完毕。

其次,我们可以把这个公式拆开看一下过程(表格第一行为主要过程,相同色系的为相同的数值):


讲解完毕,但是可能会有几个问题。

问题一:
为什么当前行数等于第一次出现的行号则返回当前行号,否则则返回最大行号呢?
是因为当前行号就是为了获取当前的数值的,而最大行号65536的一般是不会有数据,这样就机智的剔除了重复!!!

问题二:为什么要减去1?
因为第一行一般是标题行。

问题三:为什么match函数中的数据区域是2:1000?
因为第一行一般是标题行。

问题四:最大处理行数是多少?
我写的是1000,如果大于这个可以自行调整,只用把1000改为对应的行数就可以了。

问题五:数据列一定要在A吗?
不一定啊,但是需要将公式中所有的A列改为想要的列。

这个可能是一个比较复杂的公式了~

感觉有用的话,请关注公众号,并推荐给好友哦~
本公众号会不定期更新相关的文章~
MarK

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP