在下圖中是一個 Excel 的資料表,如果要計算各個日期中不含空白的不重覆資料個數,該如何處理?

 

【設計公式】

選取儲存格A1:A23,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:日期。

思考之後,發現得設計一個輔助欄位才能順利設計公式。

儲存格C2:=IF(ISBLANK(B2),"???",B2)

若B欄的儲存格內容為空白,則顯示「???」,這個內容不可以和B欄中的項目內容有所重覆。

(特別說明:原先公式由於在COUNTIF函數使用了「???」來表示空白,這是不好的做法,因為『?』會被視為萬用字元,因此如果項目欄位中使用的項目名稱是三個字元者,都會被看成是空白。要特別注意!建議讀者可以改用例如『///』等字元。)

儲存格F2:
=SUMPRODUCT(1/COUNTIF(OFFSET($A$1,MATCH(E2,日期,0),2,COUNTIF(
日期,E2),),OFFSET($A$1,MATCH(E2,日期,0),2,COUNTIF(日期,E2),)))-IF(COUNTIF(
OFFSET($A$1,MATCH(E2,日期,0),2,COUNTIF(日期,E2),),"???")>=1,1,0)

公式這麼長是要嚇死人嗎?稍微來分解一下:

OFFSET($A$1,MATCH(E2,日期,0),2,COUNTIF(日期,E2),):找出合於儲存格E2的日期儲存格範圍。(別名:日期E2)

其中 MATCH 函數找出符合儲存格E2的第一個儲存格位置,COUNTIF 函數則找出和儲存格E2內容相同的儲存格有幾個。

原公式中變化為二個部分:

(1) SUMPRODUCT(1/COUNTIF(日期E2,日期E2))

求出符合儲存格E2內容的儲存格範圍中包含「???」的不重覆個數。

(若要進一步了解可參考:Excel-計算不重覆的數值個數

(2) IF(COUNTIF(日期E2,"???")>=1,1,0)

求出符合儲存格E2內容的儲存格範圍中是否包含「???」,若是傳回 1,若否傳回 0。

將公式 (1)-(2),即為所求。

arrow
arrow
    全站熱搜

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