EXCEL 函数 index+small+match+if+row组合疑问
研究了一天,不知道错误何在,基础数据在从C4到最下面,在D4输入数组公式引用获得C4往下数据中不重复的数据,=INDEX($B:$B,SMALL(IF(MATCH($B4...
研究了一天,不知道错误何在,基础数据在从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) 不行 展开
也曾在网上寻找大量这类公式,公式案例中的基础数据都是从第二行开始,其公式为=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) 不行 展开
4个回答
展开全部
=INDEX($B:$B,SMALL(IF(MATCH($B$4:$B$1000&"",$B$4:$B$1000&"",0)=ROW($B$4:$B$1000)-3,ROW($B$4:$B$1000),4^8),ROW($B1)))&""
你的数组公式应用有几处错误,
1、行号列标都要绝对引用
2、后面的也要从第4行开始,ROW($B$4:$B$1000),你从第3行开始的
3、如果行号不是从第一行开始的,MATCH函数是从1开始返回值,要注意后面减去相应的值
你的数组公式应用有几处错误,
1、行号列标都要绝对引用
2、后面的也要从第4行开始,ROW($B$4:$B$1000),你从第3行开始的
3、如果行号不是从第一行开始的,MATCH函数是从1开始返回值,要注意后面减去相应的值
追问
谢谢您,我终于理解了,我觉得您的解释很全面,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来返回所在行的值。
理解了公式的意义,才能自己灵活运用,要不然仅靠套用,稍有不慎,就出错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
公式修改为=INDEX($B:$B,SMALL(IF(MATCH($B$4:$B$1000&"",$B$4:$B$1000&"",)=ROW($1:$997),ROW($4:$1000),4^8),ROW(A1)))&""
按三键CTRL+SHIFT+ENTER结束公式输入
下拉填充
按三键CTRL+SHIFT+ENTER结束公式输入
下拉填充
追问
刚才没完全复制你的公式,目前是对的,能告知原因以及我的错误吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
=INDEX($B:$B,SMALL(IF(MATCH($B$4:$B$1000&"",$B$4:$B$1000&"",)=ROW($4:$1000)-3,ROW($4:$1000),4^8),ROW(B1)))&""
更多追问追答
追问
依然不全对,三键下拉后,只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)))&""
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询