如下圖,如何根據起日和迄日,列出姓名清單?以下提供二種方式供參考。
1. 使用 Excel 2021 版的 FILTER 函數
選取儲存格A4:C25,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:姓名、上班起、上班迄。
儲存格D4:=FILTER(姓名,(D$3>=上班起)*(D$3<=上班迄))
複製儲存格D4,貼至儲存格D4:L4。
利用雙條件執行邏輯 AND 運算,再取出符合條件的姓名:
條件一:D$3>=上班起
條件二:D$3<=上班迄
2. 使用傳統陣列公式
儲存格D4:
{=IFERROR(INDEX(姓名,SMALL(IF((D$3>=上班起)*(D$3<=上班迄),ROW(姓名),""),ROW(1:1))-3),"")}
複製儲存格D4,貼至儲存格D4:KL25。
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
(1) IF((D$3>=上班起)*(D$3<=上班迄),ROW(姓名),"")
利用雙條件執行邏輯 AND 運算,
條件一:D$3>=上班起
條件二:D$3<=上班迄
將符合者傳回姓名欄位的列號,否則傳回空字串。
(2) SMALL(第(1)式,,ROW(1:1))
利用 SMALL 函數於第(1)式的傳回值依序由小至大取出對應的列號。
ROW(1:1)=1,公式向下複製時,ROW(1:1)=1→ROW(2:2)=2→ROW(3:3)=3→…。
(3) INDEX(姓名,第(2)式-3)
將第(2)式的傳回值代入 INDEX 函數取得姓名欄位中對應的儲存格內容。
(4) IFERROR(第(3)式,"")
利用 IFERROR 函數將第(3)傳回的錯誤訊息以空字串顯示。
【參考資料】
FILTER 函數參考微軟提供的說明網頁:FILTER 函數
INDEX 函數參考微軟提供的說明網頁:INDEX 函數
OFFSET 函數參考微軟提供的說明網頁:OFFSET 函數
SMALL 函數參考微軟提供的說明網頁:SMALL 函數
ROW 函數參考微軟提供的說明網頁:ROW 函數
留言列表