又又又来了,多工作表单列提取不重复姓名!

你好,我是刘卓。欢迎来到我的公号,excel函数解析。总有小伙伴执迷用函数来解决函数不好解决的问题,比如,多工作表提取不重复值,这就很尴尬了doge。这对我来说是一个挑战,也促使我去寻找解决方法。今天就分享2种函数的方法,不过都有限制,不能满足所有的情况,大家根据需要来选择。
-01-

filterxml+textjoin

如下图所示,有1~6月的6个工作表,分别在A列中存放姓名。现在的要求是:提取出这6个工作中的不重复姓名,并把结果放在“总表”的A列中。
第1种方法是用filterxml和textjoin这2个函数,在任意空白的单元格输入下面的公式,完成,365版本会自动扩展,没有365版本的用多单元格数组公式输出结果,或者一一提取出来输出结果。

=FILTERXML("<a><b>"&TEXTJOIN("</b><b>",,'1月:6月'!A:A)&"</b></a>","a/b[not(preceding::*=.)]")

公式就不解释了,可以参考之前filterxml的文章,或者到eh论坛找海版的帖子。下面说下这个公式的适用场景:

1)这个公式有单元格字符数32767的限制,也就是你的数据不能太多。以3个字的姓名为例,最多可以有3276个姓名。也就是所有工作表姓名的个数不超过3276是可以用的。(这里每个姓名都以3个字算的)

2)工作表最好是连续的,这样选区域也比较好选。工作表名可以是无规律的,不一定非要是1月,2月……这种的。

3)各工作表中的姓名可以是单列的,也可以是多列的。但是每个工作表中姓名的区域要一样。


-02-

countif+多维引用

第2种方法是用countif+多维引用,在A2单元格输入下面的公式,按ctrl+shift+enter,下拉填充。

=IFERROR(INDIRECT(TEXT(MIN(IF(COUNTIF(A$1:B1,T(INDIRECT(COLUMN(A:F)&"月!a"&ROW($1:$99))))=0,COLUMN(A:F)/1%+ROW($1:$99))),"0月\!a00")),"")

公式就不解释了,大家自己去拆解吧。还是说下适用场景:

1)工作表名必须是带有数字的,有规律的,可以用简单数组表示的。比如:1月,2月……这种。

2)各工作表的姓名必须是单列的,并且区域是相同的。这个公式中各工作表中姓名的行数不超过99,如果超过要改公式。

3)countif的第一参数A$1:B1中借用了B列的空白单元格,如果B列也要放内容,可以把A1设置为空白单元格,countif的第一参数改为A$1:A1。

链接:

https://pan.baidu.com/s/1glh_Doarb2ZN33u0kZHj7A

提取码:usuk
(0)

相关推荐