麻烦高手帮我分析一下这条excel公式

=INDEX(B:B,SMALL(IF(A$2:A$11=D$2,ROW($2:$11),4^8),ROW(A1)))&""... =INDEX(B:B,SMALL(IF(A$2:A$11=D$2,ROW($2:$11),4^8),ROW(A1)))&"" 展开
 我来答
大肚有话说
2018-06-30 · 生活不止有眼前的苟且,还有诗和远方
大肚有话说
采纳数:1895 获赞数:4628

向TA提问 私信TA
展开全部

这是一对多的查找公式套路,俗称万金油公式(度娘万金油公式,有很详细的介绍)

我们先将此公式简化分解,一层层去看就容易理解了

  • 最外层INDEX是主体函数,第一参数就是我们要查询并返回的数据区域,第二参数要返回的数据在查询区域的位置,本例是一个单列区域,所以位置就是数据所在行数

  • 第二参数由SMALL构造的一个公式,而SMALL函数根据IF判断生成的一个数组返回满足条件的行数,IF起到一个控制的功能(即判断满足条件);

  • ROW(A1)函数,这个是返回A1单元格所在的行号,也就是1,当整个公式下拉填充之后,就可以得到ROW(A2)、ROW(A3)。。。。也就产长一个1,2,3,4。。。。一个自然数序列构成的数组

  • 因为是数组公式,公式输入完成要按ctrl+shift+enter三键

运算给过程是首先if语句判断条件,也就是判断A2:A11区域,如果等于D2,就返回对应的所在行号,不相等的话,就返回4^8,即65536,这就构建了一个满足条件时的行数与不满足条件时65536组成的数组;外层再用small(数组,row(a1))返回第一小的数,当向下填充时small(数组,row(a2))就返回第二小的数,以此类推,依次返回第三小的数。。。。在此可能有同学就会问65536是啥意思,在较古老版本excel中最大行数就是65536行(新版本已超过10W行),一般情况下最后一行是不会存在数据的,所以返回的结果也会是空值;最后用INDEX和行数返回相应的查询值;最后的小尾巴&""是将返回值转化为文本,避免0值,所以当你要返回的数据里有数值或者日期值,或者其他自定义格式时,数据就都会被打回原形

追问
图片看不清楚呢,能发一个大点图片吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式