學校同事問到:

在 Excel 中,若要根據學生名條裡的班級和座號二個條件,如何查詢其姓名?

如下圖,想要查詢指定的班級和座號所對應的姓名,該如何處理?

Excel-雙條件查詢(SUMPRODUCT,INDEX,MATCH)

 

【公式設計與解析】

選取儲存格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 函數,傳回對應的姓名。

學不完.教不停.用不盡文章列表

arrow
arrow
    文章標籤
    Excel SUMPRODUCT INDEX MATCH
    全站熱搜

    vincent 發表在 痞客邦 留言(0) 人氣()