問題
如下工作表:
![]()
左側為項目參與的員工姓名統計,需在右側表中統計出每位員工參與的項目數量,如何用公式實現?
思路
統計每位員工姓名在B2:B15區域單元格中出現的次數,并求和。
公式實現
在E1單元格中輸入公式:
=SUMPRODUCT(--ISNUMBER(FIND(D2,B$2:B$15)))按Enter鍵,得出第一位員工王一參與的項目數量,將公式向下填充,得出其他員工參與的數量。如下圖:
![]()
公式解析
步驟1:FIND(D2,B$2:B$15)
作用:在B列的項目參與人員名單中查找員工姓名
參數:
D2:要查找的員工姓名(如"王一")
B$2:B$15:所有項目的參與人員名單范圍(14個項目)
返回值:一個包含14個元素的數組
如果找到:返回該姓名在字符串中的起始位置(數字)
如果未找到:返回錯誤值!
實際執行示例(對于"王一"):
![]()
返回數組:
{7,#VALUE!,#VALUE!,4,#VALUE!,#VALUE!,1,7,#VALUE!,#VALUE!,#VALUE!,1,#VALUE!,#VALUE!}步驟2:ISNUMBER(FIND(D2,B$2:B$15))
作用:判斷FIND函數的結果是否為數字
邏輯:
如果是數字(找到姓名)→返回TRUE
如果是錯誤值(未找到)→返回FALSE
返回值:布爾值數組
處理后的數組:
{TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE}步驟3:--ISNUMBER(FIND(D2,B$2:B$15))
作用:減負運算,將布爾值強制轉換為數字
詳細過程:
第一個負號:將TRUE轉為-1,FALSE轉為-0(即0)
第二個負號:將-1轉為1,-0轉為0
最終效果:TRUE→1,FALSE→0
轉換后的數組:
{1,0,0,1,0,0,1,1,0,0,0,1,0,0}步驟4:SUMPRODUCT(--ISNUMBER(FIND(D2,B$2:B$15)))
作用:對數組中的所有數值求和
邏輯:由于只有一個數組參數,SUMPRODUCT直接計算數組元素的和
計算過程:1+0+0+1+0+0+1+1+0+0+0+1+0+0
最終結果:5
本篇End
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.