excel CountifS +多个条件+非重复计数

wbgh16ku  于 2023-11-20  发布在  其他
关注(0)|答案(4)|浏览(130)

我正在寻找一个公式计算:独特的计数+多个标准Countifs()做它,但不包括独特的计数.
这里有一个例子。
我有一个表,我想在上面计算满足多个条件的不同项(列项)的数量,一列A和B:A>2和B<5。
Image description here
x1c 0d1x的数据

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([ColumnA],criteria A,[ColumnB],criteria B)
COUNTIFS([ColumnA],> 2,[ColumnB],< 5)
返回:行1,2,4,5,8 => Count = 5

如何根据物料列添加非重复计数函数?

第1行和第2行是唯一项目QQQ
第4行和第5行是唯一项目TTT
第8行是一个独特的项目XXX
返回计数= 3
我怎么能数到三呢?
谢谢
您可以下载Excel文件@Excel file

isr3a4wc

isr3a4wc1#

较新版本的Excel允许以(相对)更简单的方式解决这个问题。从概念上讲,它当然更容易理解和理解。
首先,根据多个条件过滤表(用 * 连接多个):

=FILTER(Table,(Table[Column A]>2)*(Table[Column B]<5))

字符串


的数据
然后,用索引抓取“Item”列:

=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)))


but5z9lq

but5z9lq2#

丑陋的公式,但它的工作。

=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;1;0}。
其中,B2:B10是“项目”列,计数公式:

COUNTIF(B2:B10,">"&B2:B10)


返回{6;6;6;3;3; 3;1;1;0},其中该数字等于B2:B10中的项目值的数量,该数量明显小于测试的项目值。

  • QQQ变为6 [3“TTT”,2“XXX”,1“zzz”]
  • TTT变为3 [2“XXX”,1“zzz”]
  • XXX转到1 [1“zzz”]
  • zzz变为0 [0小于“zzz”]

需要向此数组添加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))


ROW(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)>0)*1 = {0;0;1;0;1;0;0;1;0;0}
这= 3。
因为它是一个数组公式。
cmd + shift + enter是mac的。

jv2fixgn

jv2fixgn3#

你可以试试这个:
第一个月
但是,我在这里找到了:
https://exceljet.net/formula/count-unique-values-in-a-range-with-countif

vdgimpew

vdgimpew4#

如何在过滤器或索引阶段添加iferror,
第一个月
=IFERROR(INDEX(FILTER(TableABC, (TableABC[ID]=xxx)*(TableABC[Date]=ddd)),,2), "")

相关问题