Google表格:COUNTIF位于多个列中,但只有ONCE,如果同一行中超过1个

时间:2016-12-09 15:02:58

标签: google-sheets countif

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

我可以使用什么公式来计算某个国家/地区的出现次数(让我们说MoroccoColB:ColE但只计算一次,如果多次出现在同一行中?在这种情况下,例如结果应为3

1 个答案:

答案 0 :(得分:1)

试试这个:

=ArrayFormula(COUNTIF(MMULT(--(B2:E5="MOROCCO"),TRANSPOSE(COLUMN(B2:E5)^0)),">0"))

BTW可以使用任何逻辑表达式代替--(B2:E5="MOROCCO")

工作原理

第一个行为是truefalse数组: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