根據 Excel 2019、2016 及更早版本中的條件計算唯一數值
在 Excel 2019 及更早版本中,您可以組合 SUM、FREQUENCY 和 IF 函數來創建用于根據條件計算唯一值的公式,通用語法為:
{=SUM(--(FREQUENCY(IF(criteria_range=criteria,range),range)>0))}
Array formula, should pressCtrl + Shift + Enterkeys together.
criteria_range:與您指定的條件相匹配的單元格範圍;
criteria:您要基于的唯一值計數條件;
range:要計數的具有唯一值的單元格的範圍。
請将以下公式應用到空白單元格中,然後按Ctrl + Shift + Enter獲得正确結果的鍵,見截圖:
=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
公式說明:=SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))
IF(A2:A12=E2,C2:C12):如果 A 列中的産品是“T 恤”,則此 IF 函數返回 C 列中的值,結果是這樣的數組:{FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;錯誤;350}。
FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)= FREQUENCY({FALSE;300;500;FALSE;400;FALSE;300;FALSE;FALSE;FALSE;350},{200;300;500;350;400;450;300;550;200;260;350}):FREQUENCE函數用于對數組列表中的每個數值進行計數,并返回結果為:{0;2;1;1;1;0;0;0;0;0;0;0} .
--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0)=--({0;2;1;1;1;0;0;0;0;0;0;0}>0): 測試數組中的每個值是否都大于 0,并得到這樣的結果:{FALSE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}。 然後,雙負号将 TRUE 和 FALSE 轉換為 1 和 0,返回這樣的數組:{0;1;1;1;1;0;0;0;0;0;0;0}。
SUM(--(FREQUENCY(IF(A2:A12=E2,C2:C12),C2:C12)>0))=SUM({0;1;1;1;1;0;0;0;0;0;0;0}): 最後,使用 SUM 函數将這些值相加,得到總數:4。
提示:
如果您想根據多個條件計算唯一值,您隻需要将其他條件添加到帶有 * 字符的公式中:
=SUM(--(FREQUENCY(IF((criteria,_range1=criteria1)* (criteria,_range2=criteria2)*…,range),range)>0))
根據 Excel 365 中的條件計算唯一數值在 Excel 365 中,ROWS、UNIQUE 和 FILTER 函數的組合可以幫助根據條件計算唯一數值,通用語法是:
=ROWS(UNIQUE(FILTER(range,criteria_range=criteria)))
range:要計數的具有唯一值的單元格的範圍。
criteria_range:與您指定的條件相匹配的單元格範圍;
criteria:您要基于的唯一值計數條件;
請将以下公式複制或輸入到單元格中,然後按輸入返回結果的關鍵,請參見屏幕截圖:
=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
公式說明:=ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))
A2:A12=E2:此表達式檢查單元格 E2 中的值是否存在于 A2:A12 範圍内,并得到以下結果:{FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}。
FILTER(C2:C12,A2:A12=E2):FREQUENCE函數用于對數組列表中的每個數值進行計數,并返回結果為:{0;2;1;1;1;0;0;0;0;0;0;0} .
UNIQUE(FILTER(C2:C12,A2:A12=E2))=UNIQUE({300;500;400;300;350}):這裡,UNIQUE 函數用于從列表數組中提取唯一值以獲得此結果:{300;500;400;350}。
ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2)))=ROWS({300;500;400;350}):ROWS 函數返回基于單元格區域或數組的行數,因此,結果為:4。
提示:
1. 如果數據範圍内不存在匹配的值,您将得到一個錯誤值,要将錯誤值替換為 0,請應用以下公式:
=IFERROR(ROWS(UNIQUE(FILTER(C2:C12,A2:A12=E2))), 0)
2.要根據多個條件計算唯一值,您隻需要将其他條件添加到帶有 * 字符的公式中,如下所示:
=ROWS(UNIQUE(FILTER(range,(criteria_range1=criteria1)* (criteria_range2=criteria2)*…)))
使用的相對功能:和:
Excel SUM 函數返回提供的值的總和。
頻率:
FREQUENCY 函數計算值在一個值範圍内出現的頻率,然後返回一個垂直的數字數組。
行:
ROWS 函數返回給定引用或數組中的行數。
獨特的:
UNIQUE 函數返回列表或範圍中的唯一值列表。
過濾:
FILTER 功能有助于根據您定義的條件過濾一系列數據。
有話要說...