【Excel】提取不重复名单,就这么快
在ExcelHome技术论坛里看到这样一个问题:
多行多列提取不重复值的数组公式太慢了,能优化吗?
求助内容是在一个工资表汇总内,提取不重复的员工姓名,并且提供了附件,附件的名字就叫“很慢”。
先来看看这个名叫“很慢”的工资汇总表中的数据吧:
有没有看眼晕了?哈哈
更让人眼晕的是这个提取不重复姓名的公式;
=INDIRECT(TEXT(MIN(IF((COUNTIF($P$1:P1,$A$3:$N$86)=0)*($A$3:$N$86<>'')*MOD(COLUMN($A$3:$N$86),2),ROW($A$3:$N$86)*100+COLUMN($A$3:$N$86)),2^16),'R00C00'),)
在数据量大的工作表中使用这样复杂的公式,简直就是反人道主义啊。
用楼主的话说:“下拉到十几个的时候就很慢了,公式能优化吗?如果不能优化,用什么方法好些?”
今天咱们先不说这个反人道主义的公式是啥意思,看看用什么简便的方法能高效的解决问题。
一 插入数据透视表
首先在A列之前插入一个空白列,这步很重要哦,作用后面会说到。
再依次按Alt D P,调出数据透视表向导:
根据提示选择数据所在的范围,这个范围包括A列刚刚插入的空白列,作用是保证所有数据都可以在数据透视表的值字段:
单击【完成】按钮,会自动插入一个新的工作表,并且有一个默认样式的数据透视表。
二 调整透视表结构
还需要继续调整一下,将【数据透视表字段】列表中的【行】、【列】、【页1】的勾选全部去掉:
然后将【数据透视表字段】列表中的【值】,从值区域拖动到行区域:
这时候,数据透视表的行字段就有数百个数字和姓名列表了:
接下来的工作是去掉这些数字内容,要不要一个个勾选啊?
咱们有简便方法哈,别急。
三 标签筛选
标签筛选,筛选大于特大号数值9e307的内容,因为文本是大于任何数字的,所以这样筛选后,就是全部的文本内容了:
OK,收工了,不看广告看疗效吧:
图文过程好像很复杂的样子,其实这个过程也就是十几秒吧:
(点击下图看动态演示)