Excel——使用INDEX和SMALL实现条件筛选

如下图所示,如何实现Excel自带的筛选功能呢?(对的,就是软件自带的功能)

image

如何实现:

B13的公式:=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")

C13的公式:=IFERROR(INDEX(C:C,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")


一、对B12设置数据有效性:

先设置数据源F12:F15,包含所有类别的问题

image设置有效性条件为序列,来源为F12:F15
image


二、设计虚拟数值

C2位置:=ROUND(RAND()*100,0)

RAND()返回0~1的随机数;

ROUND,对数值进行四舍五入。


三、筛选对应的行数

=IF(A$1:A$10=B$12,ROW($1:$10))

如果故障类型一列中有与筛选项目相同的内容,返回其行数。如下图所示:

注意:先选中F1:F10,输入公式后,按住Ctrl+Shift,敲击Enter。不能先按住Ctrl+Shift,敲击Enter,再向下填充。

image


四、将行数列以升序返回有效数值

=SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))

以升序返回数据列的有效数字。如下图所示:

image

注意:先在F1中输入函数后,按住Ctrl+Shift,敲击Enter后,向下填充。与上面的输入方法不同。


五、返回对应行数的机型

=INDEX(B:B,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1)))

返回B列中对应行数的单元格内容。

注意:与上面一样,先在F1中输入函数后,按住Ctrl+Shift,敲击Enter后,向下填充。

image


六、使用IFERROR解决错误值的显示问题。

=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")

注意:与上面一样,先在F1中输入函数后,按住Ctrl+Shift,敲击Enter后,向下填充。image


七、数目一列,原理与故障类别一致,将B列改为C列即可。

=IFERROR(INDEX(C:C,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")

image

原文地址:https://www.cnblogs.com/shadrach/p/7421668.html