研究了一天,不知道错误何在,基础数据在从C4到最下面,在D4输入数组公式引用获得C4往下数据中不重复的数据,=INDEX($B:$B,SMALL(IF(MATCH($B4:$B1000&"",$B4:$B1000&"",)=ROW($B4:$B1000),ROW($B3:$B1000),4^8),ROW($B1)))&""
也曾在网上寻找大量这类公式,公式案例中的基础数据都是从第二行开始,其公式为=INDEX($C:$C,SMALL(IF(MATCH($C$2:$C$999&"",$C$2:$C$999&"",0)=ROW($1:$998),ROW($2:$998),4^8),ROW($C1)))&"",但我把基础数据移到其他位置(也就是往下移动了数行),然后修改公式,总不能获得正确结果,疑惑
打错了,基础数据从B4到最下面,在C4输入数组公式,感觉问题在=ROW($B4:$B1000),ROW($B3:$B1000),4^8)中的 B4,B3 ,但做过很多修改,如改为:=ROW($B1:$B1000),ROW($B2:$B1000),4^8),不行
改为=ROW($B4:$B1000),ROW($B4:$B1000),4^8) 不行
改为=ROW($B3:$B1000),ROW($B4:$B1000),4^8) 不行
谢谢您,我终于理解了,我觉得您的解释很全面,thanks,如果我在match再加个and条件可以吗?比如=INDEX($B:$B,SMALL(IF(AND(MATCH($B$4:$B$1000&"",$B$4:$B$1000&"",)=ROW($4:$1000)-3,$B$4:$B$1000&""=1),ROW($4:$1000),4^8),ROW(B1)))&""
好像不行,那怎么样可以呢
呵呵,那样是不行的。
这种去重复的数组公式,是利用MATCH函数总是返回第一个查找到的值所在顺序的特性,相同的只取第一个行号,其余的都不取(应用的时候,是把不取的行号设为4^8,高级版本也有设为9^9的,就是设为工作簿的行数最大值,当然数据不多时也可以取小点,比如把这里的4^8改为20000,只要超出你数据的最大行就OK),再配合SMALL函数依次返回第一小、第二小……的行号,再用INDEX来返回所在行的值。
理解了公式的意义,才能自己灵活运用,要不然仅靠套用,稍有不慎,就出错了。
刚才没完全复制你的公式,目前是对的,能告知原因以及我的错误吗
依然不全对,三键下拉后,只C4对,从C5开始下面没有数据出现
追答=INDEX($B:$B,SMALL(IF(MATCH($B$4:$B$1000&"",$B$4:$B$1000&"",0)=ROW($4:$1000)-3,ROW($4:$1000),4^8),ROW(B1)))&""
追问哦,match满足条件的是其位置,位置,当然肯定是从第1开始,所以行号得减去3,因为是从第4行开始的,是这样理解的吗
追答对,正确。
本回答被提问者采纳