我正在寻找一个公式计算:不同的计数+多个标准 Countifs()做到了,但不包括明显的计数...
这是一个例子。
我有一张表,我想要计算满足多个条件的不同项目(列项目)的数量,一列A和B:A> 2和B< 5.
Line Item ColA ColB
1 QQQ 3 4
2 QQQ 3 3
3 QQQ 5 4
4 TTT 4 4
5 TTT 2 3
6 TTT 0 1
7 XXX 1 2
8 XXX 5 3
9 zzz 1 9
Countifs以这种方式工作:COUNTIFS([ColumnA],标准A,[ColumnB],标准B)
COUNTIFS([ColumnA],> 2,[ColumnB],< 5)
返回:第1,2,4,5,8行=>数= 5
如何根据项目列添加不同的计数功能?:
第1,2行是一个独特的QQQ项目
第4,5行是一个独特的项目TTT
第8行位于唯一商品XXX
上返回Count = 3
我怎么算3?!
由于
您可以下载excel文件@ Excel file
答案 0 :(得分:4)
丑陋的公式,但它有效。
=SUM(((FREQUENCY(IF(C2:C10>2,1,0)*IF(D2:D10<5,1,0)*(COUNTIF(B2:B10,">"&B2:B10)+1),ROW(B2:B10)-ROW(B2)))*(ROW(B2:B11)-ROW(B2))>0)*1)
我将从标准IFS开始:
IF(C2:C10>2,1,0)*IF(D2:D10<5,1,0)
为满足两个条件的行提供1和0的数组。对于你的例子,ARRAY = {1; 1; 1; 1; 0; 0; 0; 1; 0}。
其中B2:B10是Item列,countif公式:
COUNTIF(B2:B10,">"&B2:B10)
返回{6; 6; 6; 3; 3; 3; 1; 1; 0},其中数字等于B2中的项目值数量:B10按字母顺序小于测试项目值。
需要在此数组中添加1以确保没有0值: {7; 7; 7; 4; 4; 4; 2; 2; 1}。
所以当乘以标准和countif语句时:
(IF(C2:C10>2,1,0)*IF(D2:D10<5,1,0)*(COUNTIF(B2:B10,">"&B2:B10)+1)
你得到ARRAY = {7; 7; 7; 4; 0; 0; 0; 2; 0}。
FREQUENCY(ARRAY,ROW(B2:B10)-ROW(B2))
行(B2:B10)-ROW(B2)将频率区间设置为{0; 1; 2; 3; 4; 5; 6; 7; 8}。因此,频率公式的输出为{4; 0; 1; 0; 1; 0; 0; 3; 0; 0},其中最后一个0适用于大于8的所有值。
<(>(ROW(B2:B11)-ROW(B2)> 0)* 1)等于{0; 1; 1; 1; 1; 1; 1; 1; 1; 1}。将ARRAY乘以此将在开始时删除0计数:ARRAY = {0; 0; 1; 0; 1; 0; 0; 3; 0; 0}。 [注意:B11是最低项目列单元格+ 1,因为从频率公式中为8以上的值添加了数组值](ARRAY)&gt; 0)* 1 = {0; 0; 1; 0; 1; 0; 0; 1; 0; 0}
SUM this = 3。
ctrl + shift + enter,因为它是一个数组公式。
cmd + shift +输入mac。
答案 1 :(得分:1)
较新版本的Excel允许以(相对)更简单的方式解决此问题。从概念上讲,当然更容易遵循和理解。
首先,根据多个条件(用*联接多个)过滤表:
=FILTER(Table,(Table[Column A]>2)*(Table[Column B]<5))
然后,使用INDEX获取“项目”列:
=INDEX(FILTER(Table,(Table[Column A]>2)*(Table[Column B]<5)),,2)
下一步,过滤唯一条目:
=UNIQUE(INDEX(FILTER(Table,(Table[Column A]>2)*(Table[Column B]<5)),,2))
最后,进行计数:
=COUNTA(UNIQUE(INDEX(FILTER(Table,(Table[Column A]>2)*(Table[Column B]<5)),,2)))
答案 2 :(得分:0)
你可以试试这个:
=SUMPRODUCT(1/COUNTIF(B2:B10,B2:B10))
信用到期,但是......我在这里找到了它:
https://exceljet.net/formula/count-unique-values-in-a-range-with-countif