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) 不行
展开
 我来答
凌文元LWY
高粉答主

推荐于2018-03-07 · 每个回答都超有意思的
知道大有可为答主
回答量:3.6万
采纳率:76%
帮助的人:1.3亿
展开全部
C4单元格输入以下数组公式,按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(A1)))&""
公式中首先要保持所有的维度一致,保持引用区域的行绝对引用状态,然后如果首行与第一行相隔多少行,就减去多少行。
s今生缘
高粉答主

2014-12-20 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.2万
采纳率:85%
帮助的人:4862万
展开全部
=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开始返回值,要注意后面减去相应的值
追问
谢谢您,我终于理解了,我觉得您的解释很全面,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来返回所在行的值。
理解了公式的意义,才能自己灵活运用,要不然仅靠套用,稍有不慎,就出错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑一笑说一说
科技发烧友

2014-12-20 · 职场办公软件基础应用
笑一笑说一说
采纳数:16868 获赞数:33699

向TA提问 私信TA
展开全部
公式修改为=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结束公式输入
下拉填充
追问
刚才没完全复制你的公式,目前是对的,能告知原因以及我的错误吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
台浦泽4r
推荐于2016-10-08 · TA获得超过937个赞
知道小有建树答主
回答量:1249
采纳率:62%
帮助的人:633万
展开全部
=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)))&""
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式