【问题标题】:Can I make an array out of a range of countif functions?我可以从一系列 countif 函数中创建一个数组吗?
【发布时间】:2020-04-04 11:35:42
【问题描述】:

我的数据的截断版本如下面的屏幕截图所示:三列,每列 5 个唯一名称。名称以任何顺序和任何位置出现,但绝不会在一行中重复。

我的目标是创建一个数组,其中包含 Adam 在每一行中出现的次数。我可以在新列中填写公式=countif(A2:C2,$I$2),或者如果我为每一行手动编写数组,它看起来像:

={countif(A2:C2,$I$2);countif(A3:C3,$I$2);countif(A4:C4,$I$2);countif(A5:C5,$I$2);countif(A6:C6,$I$2)}

其中单元格 I2 包含“亚当”。当然,这对于大数据集是不可行的。

我知道数组实际上是将单元格转换为范围,但我的主要问题是我尝试转换的单元格已经引用了一个范围,我不知道如何告诉软件将 countif 向下应用行(即,我凭直觉想做类似 countif((A2:C2):(A99:C99),"Adam") 的事情,但要明白这不是电子表格的工作方式)。

我的目标最终是在相应的数组上执行一些操作,但我认为一旦我能够获得我正在寻找的数组公式,我就会对此感到满意。

【问题讨论】:

    标签: arrays if-statement google-sheets google-sheets-formula array-formulas


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(IF(A2:A="",,MMULT(IF(A2:C="Adam", 1, 0), {1;1;1})))
    

    【讨论】:

    • 谢谢,这正是我想要的!如果可以的话,你能告诉我这个公式在做什么吗?我不太了解 IF 语句以及正在相乘的矩阵(以及为什么)。不过,您似乎找到了一个创造性的解决方案,我很感激。
    • 当然。如果 A2:C 等于 Adam,它将用 1 替换它。如果它不等于 Adam,那么它将为 0。然后将其传递给 MMULT,它将先前计算的每一列(表示为 {1;1;1})相加零和一。外部 IF 只是装饰性的,可以在列结束之前消除零。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2018-07-18
    • 2019-04-16
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多