學校同事問到:
在 Excel 中,若要根據學生名條裡的班級和座號二個條件,如何查詢其姓名?
如下圖,想要查詢指定的班級和座號所對應的姓名,該如何處理?
【公式設計與解析】
選取儲存格A1:C26,按 Ctrl+Shift+F3 鍵,定義名稱:班級、座號、姓名。
1. 使用陣列公式
儲存格G2:{=INDEX(姓名,MATCH(1,(班級=E2)*(座號=F2),0),0)}
輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 會自動加上「{}」。
複製儲存格G2,貼至儲存格G2:G7。
(1) MATCH(1,(班級=E2)*(座號=F2),0)
在陣列公式中,利用 MACTH 函數裡的雙條件:班級=E2和座號=F2,找尋傳回結果為「1」的位置。因為班級和座號的排列組合具唯一性,其會傳回 0 和 1 數字組成的陣列,而且其中只有一個是 1。
其中 班級=E2 和 座號=F2 會傳回判斷結果的 TRUE/FALSE 陣列,而「*」運算子相當於執行邏輯 AND 運算,運算過程中會將 TRUE/FALSE 陣列,轉換為 1/0。
(2) INDEX(姓名,第(1)式,0)
將式子(1)傳回的位置代入 INDEX 函數,傳回對應的姓名。
2. 使用非陣列公式
儲存格G2:=INDEX(姓名,SUMPRODUCT((班級=E2)*(座號=F2)*ROW(姓名))-1,0)
複製儲存格G2,貼至儲存格G2:G7。
(1) SUMPRODUCT((班級=E2)*(座號=F2)*ROW(姓名))-1
在 SUMPRODUCT 函數中利用雙條件:班級=E2和座號=F2,傳回對應姓名的列號。因為班級和座號的排列組合具唯一性,所以傳回的列號就是班級和座號對應的姓名位置。(-1在此的用意是因為第一個姓名是從第 2 列開始)
(2) INDEX(姓名,第(1)式-1,0)
將式子(1)傳回的位置代入 INDEX 函數,傳回對應的姓名。
留言列表