一个条件多个结果,放到不同单元格中 2018-01-27

【注】
1、数组公式 ctrl+shift+enter

[说明如下]

2018-01-27_180542.png

2018-01-27_180531.png

=INDEX(A:A,SMALL(IF($B$2:$B$20="Sam",ROW($2:$20),4^8),ROW(A1)))&""

  1. IF($B$2:$B$20="Sam",ROW($2:$20),4 ^ 8)这部分
    如果$B$2:$B$20的内容等于指定的"Sam",就返回对应的行号,否则返回一个4^8,也就是4的8次方,即65536,这是Excel 2003版本中最大行号,一般来说 到这个位置 就不会有内容了。
    返回由符合条件的行号及65536组成的内存数组(数组中的值如下图)。
  • SMALL(IF($B$2:$B$20="Sam",ROW($2:$20),4^8),ROW(A1))
    然后使用SMALL函数 从返回内存数组中(数组中的值如下图),从小到大依次取值,提取结果作为INDEX的索引值。
    其中ROW(A1),返回单元格的行号,随着填充柄向下填充自动变为row(a2) row(a3),返回的值也变为2 、3,依次对应第2小、第3小的数值。


    2018-01-27_182214.png
  1. INDEX(A:A ..
    INDEX函数从A列中,提取出对应位置的内容。

如果SAMLL的结果是65536,index返回的结果就是A65536单元格的内容,如果A65536单元格本身是空单元格,INDEX会返回一个无意义的0,所以加上&"" ,使结果变成文本,这样就不会出现无意义的0了。
评分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容