查找不重复值函数方法集锦.xls
上传人:qw****27 上传时间:2024-09-11 格式:XLS 页数:3 大小:82KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

查找不重复值函数方法集锦.xls

查找不重复值函数方法集锦.xls

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

内存数组法(数据源为内存定义,最后查找结果也为内存数组)http://club.excelhome.net/dispbbs.asp?boardid=3&replyid=407779&id=169505&page=1&skin=0&Star=1如果数据源为文本data={1;2;1;2;"a";"a";"b"}注意:数组里没有空值、false之类的干扰数值,或#N/A等错误值,否则需要加条件判断。rw=ROW(INDIRECT("1:"&ROWS(data)))newdata=LOOKUP(SMALL(IF(MATCH(data,data,)=rw,rw),ROW(INDIRECT("1:"&SUM(N(MATCH(data,data,)=rw))))),rw,data)rw:newdata:11223a4b567注:1,原公式含义:newdata=LOOKUP(SMALL(IF(条件,ROW(INDIRECT("1:"&总行数))),ROW(INDIRECT("1:"&满足条件个数))),ROW(INDIRECT("1:"&总行数)),数据)2,如果用“row总”来表示一个数组(或单元格区域)data的原始行数,用“row条件”表示满足条件的data个数,indirect部分简写:newdata=Lookup(small(if(条件,row(1:row总)),row(1:row条件)),row总,data),最后所得内存数组的行数为row条件。3,如果数据源包含空值:修改公式为:newdata:=LOOKUP(SMALL(IF((MATCH(data,data,)=rw)*(data<>""),rw),ROW(INDIRECT("1:"&SUM(N((MATCH(data,data,)=rw)*(data<>"")))))),rw,data)4,如果数据源包含#N/A:增加定义名称:data_temp=IF(ISNA(MATCH(data,data,)),0,MATCH(data,data,))修改公式为:newdata=LOOKUP(SMALL(IF(data_temp=rw,rw),ROW(INDIRECT("1:"&SUM(N(data_temp=rw))))),rw,data)如果数据源为数字(结果按大小排序)data1={1;2;false;1;2;4;5;9;9;17;false;false}注意:如果源数据中包含#N/A等错误返回值的话,order公式之前需要增加条件判断。order=SMALL(data1,ROW(INDIRECT("1:"&SUM(--ISNUMBER(data1)))))newdata1=SMALL(IF(FREQUENCY(order,order),order),ROW(INDIRECT("1:"&SUM(--(FREQUENCY(order,order)>0)))))order:newdata1:11122425495179917注:1,如果数据源包含#N/A:修改order定义:order=SMALL(IF(ISNA(data1),FALSE,data1),ROW(INDIRECT("1:"&SUM(--ISNUMBER(data1))))),最后的newdata1定义公式不变。非内存数组(数据源为区域引用)http://club.excelhome.net/dispbbs.asp?boardid=102&replyid=125412&id=103004&page=1&skin=0&Star=8如果数据源为文本data_arr:CCCAAACAABBCCCAB方法1:new_data1=IF(ROW(1:1)>SUM(1/COUNTIF(data_arr,data_arr)),"",INDEX(data_arr,SMALL(IF(MATCH(data_arr,data_arr,0)=ROW(data_arr)-49,ROW(data_arr)-49),ROW(1:1))))方法1:变化1:变化2:变化3:CCCCCCCCCACACACAAAAAAAAAABABABABBCBCBCBC注意:1,其中红色49为data_arr起始行位置,需要根据数据区域实际位置进行调整。2,公式中SUM(1/COUNTIF(data_arr,data_arr))部分为计算非重复元素个数,可能因为浮点运算产生误差,可用round函数取整或+0.1来进行处理,或用SUM(N(MATCH(data_arr,data_arr,0)=ROW(data_arr)-49))等方式进行替换,例子见变化1、变化2。3,前面部分也可采用ROWS(data_arr)<=SUM(COUNTIF(data_arr,D$61:D61