查看原文
其他

案例:如何用Excel的高级筛选功能选出不重复的单词?

数据冰山 2022-04-11


自从数据冰山回答了这个问题:Excel到底有多厉害?粉丝都按捺不住了,各种留言和私信:求教程!求培训!下面这位同学的问题就很有代表性嘛,我们一起来看看怎么解决,大家顺便也get一些实用的小技能,来提高工作效率吧:)

如图,将单词A当中那些和单词B重复了的单词筛选掉,有两点需要注意:一个是要整体相同才算,部分相同不用筛选掉;二是不必在同一行,比如B3C5一样,也算重复,要把B3去掉。


解决这个问题可以拆分成几个步骤:

1,  为了后续编写函数方便,现将B3-B9定义为 “wordA”,C3-C9定义为 “wordB”,D3-D9定义为 “Number”。方法是选定B3-B9后右键选择“定义名称”,然后在名称那里写上“wordA”,点击确定即可,其余同理;

2,  首先用MATCH函数将wordB中与wordA里相同的单词筛选出来,输入“=MATCH(B3,wordB,0)”。按下图Excel提示,lookup_value即要查找的对象B3也就是DOGlookup_array即要查找的范围也就是数组wordBmatch_type0即精确匹配。

其余下拉即可,得到下图。3表示在wordB里的第三个找到了匹配的,可以看到没有匹配的系统都报错。

3,  ISERROR函数,ISERROR 值为任意错误值(#N/A#VALUE!#REF!#DIV/0!#NUM!#NAME?  #NULL!)时,返回TRUE否则返回FALSE。这样将有匹配和没有匹配的分别归类,参考下图

下拉后整理为

4,  后面的任务就是将TRUE的单词都筛选出来,按照原来的顺序依次排列。首先,要将它们在wordA里的顺序提取出来,这里可以用到IF函数。IF是判断是否满足某个条件,满足的话返回一个值,不满足返回另一个值。以H3为例,为TRUE时,返回它在单词A里的序号,为FALSE时,返回空。

5,  之后可以用SMALL函数将数值依次排列起来,SMALLArrayK)即返回数组Array中第K个最小值。这里是将I3I9数组里按照第一小,第二小,第三小,依次排列。

6,  最后就可以用INDEX函数,按照row J里的数字对应的次序将wordA里的单词返回。这样就筛选出了没有重复出现的单词。

7,  如果用一个总函数来写,就是=INDEX(wordA,SMALL(IF(ISERROR(MATCH(wordA,wordB,0)),ROW(wordA)-2),ROW(A1)))


下载本案例请戳:案例1-文图

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存