回答網友提問:
在 Excel 裡有一個資料表(參考下圖),如何核對資料表的編號和欄位名稱,如果:
(1)有 V 者標示補休
(2)無 V 者標示加班費
設計與解析
儲存格D11:=IF(INDEX($A$3:$E$8,MATCH(A11,$A$3:$A$8,0),
MATCH(C11,$A$2:$E$2,0))="V","補休","加班費")
複製儲存格D11,貼至儲存格D11:D16。
(1)MATCH(A11,$A$3:$A$8,0)
利用MATCH函數查詢儲存格A11,在編號欄位中的位置,會傳回一個數字。本例為:1。
(2)MATCH(C11,$A$2:$E$2,0)
利用MATCH函數查詢儲存格C11,在標題列中的位置,會傳回一個數字。本例為:3。
(3)INDEX($A$3:$E$8,第(1)式,第(2)式)
在INDEX函數利用第(1)式和第(2)式傳回值,對應得到資料陣列中的值,本例為:V。
(4)IF(第(3)式="V","補休","加班費")
根據第(3)式傳回值,判斷是否為「V」,如果是則顯示「補休」,如果不是則顯示「加班費」。本例為:補休。
第二種作法
選取儲存格A2:E8,按Ctrl+Shift+F3鍵,勾選「頂端列」,定義名稱:編號、姓名、休息日、國定假日、延時。
儲存格D11:=IF(INDEX(INDIRECT(C11),MATCH(A11,編號,0))="V","補休","加班費")
(1)INDIRECT(C11)
利用INDIRECT函數將儲存格C11的內容轉換為儲存格範圍。
(2)MATCH(A11,編號,0)
利用MATCH函數查詢儲存格A11,在編號欄位中的位置,會傳回一個數字。本例為:1。
(3)INDEX(INDIRECT(C11),MATCH(A11,編號,0))
在INDEX函數利用第(1)式傳回值(欄位)和第(2)式傳回值(第幾筆),對應得到資料陣列中的值,本例為:V。
(4)IF(第(3)式="V","補休","加班費")
根據第(3)式傳回值,判斷是否為「V」,如果是則顯示「補休」,如果不是則顯示「加班費」。本例為:補休。
【參考資料】
INDEX 函數參考微軟提供的說明:INDEX 函數
MATCH 函數參考微軟提供的說明:MATCH 函數
留言列表