分享

多列去重

 L罗乐 2017-10-29


一、效果,去重A、B、C列的数据得到E列结果


二、多列连续去重

1、公式截图

2、公式

=INDIRECT(TEXT(MIN(IF(COUNTIF($E$1:E1,$A$2:$C$5)=0,ROW($A$2:$A$5)*10^5 COLUMN($A$2:$C$2),104857616384)),'R0C00000'),)&''

3、公式解释

  • 这个要看懂还是要一定函数功底,当然这也是我们函数高级班课件里的一个案例

  • 这是一个数组公式,把公式复制好之后,光标定位到编辑栏,然后Ctrl Shift Enter

  • 去重公式这个经典之一是这个COUNTIF($E$1:E1,$A$2:$C$5)用得好,第1参数是一个动态的区域,锁住头不锁住尾

  • 如果E列得到唯一值之后,countif统计就不会0了,其实COUNTIF($E$1:E1,$A$2:$C$5)得到0值就是在E列还没有出现过的

  • 如果countif统计的结果0,我们就给它的行加权,为什么要给行加权,因为这数据源是一个二维区域,不加权区分不了行和列,不便于后面我们嵌套text函数转为R1C1引用样式,在countif函数后面嵌套一个min函数就得到前面三列在E列没有出现的数据

  • text函数第2参数用R0C00000这种格式,目的也是把满足条件的行和列分开出来,然后再嵌套indirect返回具体单元格的内容。


三、多列不连列去重

1、公式截图

2、公式

=INDIRECT(TEXT(MIN(IF((COUNTIF($G$1:G1,$A$2:$E$5)=0)*{1,0,1,0,1},ROW($A$2:$A$5)*10^5 COLUMN($A$1:$E$1),104857616384)),'R0C00000'),)&''

3、公式解释

  • 和上面一样的就不解释了,只是在if函数第1参数加了一个条件{1,0,1,0,1}要处理的列用1表示,空列就用0表示

四、多列不连续且有空单元格去重

1、公式截图

2、公式

=INDIRECT(TEXT(MIN(IF((COUNTIF($G$1:G1,$A$2:$E$5)=0)*{1,0,1,0,1}*($A$2:$E$5<>''),ROW($A$2:$A$5)*10^5 COLUMN($A$1:$E$1),104857616384)),'R0C00000'),)&''

3、公式解释

  • 同要也是在if函数第1参数($A$2:$E$5<>'')再加个不等于空的条件,基它不变

五、小结

1、这种函数算函数高级部分了,如果你看不懂,也是正常的,就算你函数中级水平,也不一定看懂,也是正常的,你可以复制公式,嵌用,先解决你工作上的问题,如果你现在工作中用不到,你可以先收藏。

2、如果你想学习这些函数,可以报我们的函数高级班培训,加我微信18664243619,听在线视频和视频回放,相对来说,理解,学习这一块比起你自学会快许多

3、另数组公式太多会卡表,这类题建议用vba数组 字典来解决,就不会卡表。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多