書接上回,開啟進階!
還是用昨天同一組示例數據,稍微變一下表現形式:
所以,本部分IF函數的返回值是數組:
{1;””;””;4;””;””;7;””;9}
SMALL(IF(COUNTIF($D$2:$D$6,$A$2:$A$10),””,ROW($1:$9)),ROW(A1))
ROW(A1)的返回值是1,所以,此部分是返回數組{1;””;””;4;””;””;7;””;9}的最小值,即1;公式每往下填充一行,ROW(A1)變為ROW(A2),ROW(A3),ROW(A4)……,此部分SMALL公式就會返回數組{1;””;””;4;””;””;7;””;9}的第2、3、4……小的數值,即4,7,9……;
INDEX(A$2:A$10,SMALL(IF(COUNTIF($D$2:$D$6,$A$2:$A$10),””,ROW($1:$9)),ROW(A1)))
公式在F2中,即是返回A2:A10區域中第1位的數據A1;公式往下填充,即返回A2:A10區域中第4、7、9位的數據A4、A7、A9,即得到了剔除指定姓名以后保留的姓名;
IFERROR(INDEX(A$2:A$10,SMALL(IF(COUNTIF($D$2:$D$6,$A$2:$A$10),””,ROW($1:$9)),ROW(A1))),””)
用IFERROR,如果查找到結果就返回值,如果查不到,出現錯誤,則返回空值。
保留成績的計算:
因為公式中的A$2:A$10,使用的混合引用,A列沒有鎖定,所以,向右填充,會自從變為B$2:B$10,也就是保留的B列的成績。