如下圖所示,如何實現Excel自帶的篩選功能呢?(對的,就是軟件自帶的功能)
如何實現:
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,包含所有類別的問題
二、設計虛擬數值
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,再向下填充。
四、將行數列以升序返回有效數值
=SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))
以升序返回數據列的有效數字。如下圖所示:
注意:先在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后,向下填充。
六、使用IFERROR解決錯誤值的顯示問題。
=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")
注意:與上面一樣,先在F1中輸入函數后,按住Ctrl+Shift,敲擊Enter后,向下填充。
七、數目一列,原理與故障類別一致,將B列改為C列即可。
=IFERROR(INDEX(C:C,SMALL(IF(A$1:A$10=B$12,ROW($1:$10)),ROW(A1))),"")