Google 工作表:COUNTIF 在多列中,但如果同一行中超过 1 个,则只有一次
Google Sheets: COUNTIF in multiple columns but only ONCE if more than 1 in same row
ColA ColB ColC ColD ColE
DATE COUNTRY 1 COUNTRY 2 COUNTRY 3 COUNTRY 4
01/xx/2017 INDONESIA GERMANY PHILIPPINES PAKISTAN
01/xx/2017 MOROCCO MOROCCO MOROCCO ITALY
23/xx/2017 USA UK NETHERLANDS MOROCCO
23/xx/2017 MOROCCO TANZANIA AUSTRALIA SWEDEN
我可以使用什么公式来计算一个国家(比如 Morocco
)在 ColB:ColE
中出现的次数,但如果在同一行中出现不止一次,则只计算一次?在这种情况下,例如结果应该是 3
.
试试这个:
=ArrayFormula(COUNTIF(MMULT(--(B2:E5="MOROCCO"),TRANSPOSE(COLUMN(B2:E5)^0)),">0"))
顺便说一句,可以使用任何逻辑表达式代替 --(B2:E5="MOROCCO")
工作原理
第一步是得到 true
和 false
数组:ArrayFormula(B2:E5="MOROCCO")
输出是这样的
true false false false
true true true false
false false false true
false false false false
然后我们需要将它转换成1 / 0
数组。简单的数学运算就可以做到:
ArrayFormula(--(B2:E5="MOROCCO"))
现在的输出是:
1 0 0 0
1 1 1 0
0 0 0 1
0 0 0 0
现在我们可以按行添加它们:使用mmult
函数。但首先我们需要一列 1
,其中元素数 = 数组中的列数。要获得它,请使用公式:
=ArrayFormula(TRANSPOSE(COLUMN(B2:E6)^0))
结果是:
1
1
1
1
最后使用 mmult:=ArrayFormula(MMULT(--(B2:E6="MOROCCO"),TRANSPOSE(COLUMN(B2:E6)^0)))
结果是:
1
3
1
0
我真的不知道,为什么会这样。就用这个。
最后一步是计算所有 > 0
= 3
ColA ColB ColC ColD ColE
DATE COUNTRY 1 COUNTRY 2 COUNTRY 3 COUNTRY 4
01/xx/2017 INDONESIA GERMANY PHILIPPINES PAKISTAN
01/xx/2017 MOROCCO MOROCCO MOROCCO ITALY
23/xx/2017 USA UK NETHERLANDS MOROCCO
23/xx/2017 MOROCCO TANZANIA AUSTRALIA SWEDEN
我可以使用什么公式来计算一个国家(比如 Morocco
)在 ColB:ColE
中出现的次数,但如果在同一行中出现不止一次,则只计算一次?在这种情况下,例如结果应该是 3
.
试试这个:
=ArrayFormula(COUNTIF(MMULT(--(B2:E5="MOROCCO"),TRANSPOSE(COLUMN(B2:E5)^0)),">0"))
顺便说一句,可以使用任何逻辑表达式代替 --(B2:E5="MOROCCO")
工作原理
第一步是得到 true
和 false
数组:ArrayFormula(B2:E5="MOROCCO")
输出是这样的
true false false false
true true true false
false false false true
false false false false
然后我们需要将它转换成1 / 0
数组。简单的数学运算就可以做到:
ArrayFormula(--(B2:E5="MOROCCO"))
现在的输出是:
1 0 0 0
1 1 1 0
0 0 0 1
0 0 0 0
现在我们可以按行添加它们:使用mmult
函数。但首先我们需要一列 1
,其中元素数 = 数组中的列数。要获得它,请使用公式:
=ArrayFormula(TRANSPOSE(COLUMN(B2:E6)^0))
结果是:
1
1
1
1
最后使用 mmult:=ArrayFormula(MMULT(--(B2:E6="MOROCCO"),TRANSPOSE(COLUMN(B2:E6)^0)))
结果是:
1
3
1
0
我真的不知道,为什么会这样。就用这个。
最后一步是计算所有 > 0
= 3