zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    【转】 VC MFC 钩子 实现 自绘 窗体 标题栏 非客户区
    Scintilla开源库使用指南(二)
    Scintilla开源库使用指南(一)
    【转】MFC 多文档
    多视图识别
    获得MFC窗口其它类指针的方法
    sql2005 查看数据库或表大小的系统存储过程 sp_spaceused
    哪里是乐土?关于团队良性循环 (转)
    项目管理反思——前言
    项目经理思考——团队
  • 原文地址:https://www.cnblogs.com/shadrach/p/7421668.html
Copyright © 2011-2022 走看看