問題描述:值班組長在安排部門人員值班的時候,需要查看每個人員最近一次的值班日期,避免重復安排。例如下圖中,黃思思最近一次值班時間是19年10月12號,因此在排版的時候就不會排在13號,現(xiàn)在我想選擇每一個員工,都可以看到他最近的值班時間,如何用函數(shù)實現(xiàn)呢?
方法一:使用LOOKUP函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=LOOKUP(1,0/($A$2:$A$13=$D$2),$B$2:$B$13)” -- 按回車鍵回車。
2、動圖演示如下。
3、公式解析。
上述公式中,先判斷A2:A13單元格的值是否跟D2單元格的值相等,如果相等,返回TRUE,否則,返回FALSE。此時得到一個TRUE和FALSE組成的數(shù)組{FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE}。用0除以這個數(shù)組,得到由0和錯誤值#DIV/0!組成的數(shù)組{#DIV/0!;0;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0},此時由于在這個數(shù)組中找不到1,所以LOOKUP函數(shù)會查找最后一個比1小的最大值,也就是0,忽略錯誤值,所以找到了數(shù)組中最后一個0,返回B2:B13單元格區(qū)域?qū)闹怠?/p>
方法二:使用INDEX+SUMPRODUCT+MAX+ROW函數(shù)。
具體操作步驟如下:
1、選中E2單元格 -- 在編輯欄中輸入公式“=INDEX($B$2:$B$13,MAX(ROW($A$2:$A$13)*($A$2:$A$13=$D$2))-1)” -- 按“Ctrl+Shift+Enter”回車。
2、動圖演示如下。
3、公式解析。
上述公式中,先判斷A2:A13單元格的值是否跟D2單元格的值相等,如果相等,返回TRUE,否則,返回FALSE。此時得到一個TRUE和FALSE組成的數(shù)組{FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE}。該數(shù)組與ROW函數(shù)得到的行號數(shù)組{2;3;4;5;6;7;8;9;10;11;12;13}相乘,得到一個由行號和0組成的數(shù)組{0;3;0;0;6;0;0;0;0;0;0;13},然后用MAX函數(shù)取這個數(shù)組中的最大值,減去1是因為我們要查找的值在B2:B13單元格區(qū)域中是從第2行開始的,我們需要知道查找的值在B2:B13單元格區(qū)域所在的位置,所以要減去1,最后用INDEX函數(shù)從B2:B13單元格區(qū)域獲取對應的值。
聯(lián)系客服