送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
小伙伴问了我这样一个问题:如何利用公式将下表中的多列合并为一列,而且要剔除重复值。
这个题目和我们之前的帖子如何用公式将多列合并为一列中的内容是相类似的。
只不过,在如何用公式将多列合并为一列中,具有去重功能的公式是横向提取数据的。而本题中很明显是希望纵向提取数据且去重。
不过不用担心,我们依然有很多方法可以解决这个问题,比如说,利用数据透视表就可以。当然,今天我们要着重介绍如何用公式来解决
首先是和并列。这个可以参考帖子如何用公式将多列合并为一列中介绍的方法。
在单元格N1中输入公式“=IFERROR(INDIRECT(TEXT(RIGHT(SMALL(IF($A$1:$L$21<>"",ROW($A$1:$L$21)/1%+COLUMN(A:L)*10001),ROW(A1)),4),"r0c00"),),"")”,三键回车并向下拖曳即可。
具体的思路可以参看帖子如何用公式将多列合并为一列。
但是,上面这个公式是没有去重功能的。接下来我们还要考虑如何实现去重。思考三秒钟,不要走开!
想要实现去重更能,我们就要借助COUNTIF函数的帮助了。首先,我们在数据源的最上方需要插入一列空白列。
上面的公式也相应地变成=IFERROR(INDIRECT(TEXT(RIGHT(SMALL(IF($A$2:$L$22<>"",ROW($A$2:$L$22)/1%+COLUMN(A:L)*10001),ROW(A1)),4),"r0c00"),),"")
涂黄色的部分是变更的部分。
整个公式应书写为:
=IFERROR(INDIRECT(TEXT(RIGHT(SMALL(IF((--($A$2:$L$22<>"")-COUNTIF($N$1:N1,$A$2:$L$22))>0,ROW($A$2:$L$22)/1%+COLUMN(A:L)*10001),ROW($A$1)),4),"r0c00"),),"")
思路:
整体上思路是一致的
COUNTIF部分,针对那些已经在N列中提取到的数据,就需要把它们从源数据中剔除,从而达到去重的目的
SMALL函数的参数,ROW($A$1)也变成固定引用,从而达到每次都提取最小值的目的。这里也可以用MIN函数替代
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
注意!前方有红包挡道!速点阅读原文消灭之!
联系客服