具有多个级别的Countif和ArrayFormula

时间:2019-07-02 23:52:12

标签: regex google-sheets countif google-sheets-formula array-formulas

我有一个公式。它可以工作-但感觉可以变得更简单。

我在几个专栏中都有许多部门。每行都有一个我们要跟踪的项目,每列都有一个状态文本,随着我们的工作而变化。

“队列”-等待完成并权衡平均值

“活动”-进行中,提供平均值的一半

“完成”,“确定”,“ rcvd”-完成并有助于最终平均值 “无”-表示该部门处于非活动状态,不应计入最终平均值。

公式为:

=iferror(((ArrayFormula(sum(countif(B3:O3,{"done","ok'd","rcvd"}))))+(countif(B3:O3,"active")/2))/(counta(B3:O3)-(countif(B3:O3,"none"))),)

该公式有效,但是我正在寻找是否有一种更简单的方法来处理它。在这种情况下,查询或数组修改会更好地工作吗?

如果要基于当前应用程序的语法添加其他文本字符串怎么办?

这是到上下文的示例表的链接。

https://docs.google.com/spreadsheets/d/1zPFAcSxM7tYjZmlATYde7qKsDoeH6AW_xjFooOZFOf4/edit#gid=0


编辑:

作为后续问题-如何使相同的内容跨列工作?

我对该解决方案进行了一些逆向工程,可以看到公式在工作表的顶部起作用-但这给了我一个错误:

  

“ MMULT的矩阵大小不兼容。第一个矩阵(13)中的列数必须等于第二个矩阵(1)中的行数。”

这是我添加的公式(也在链接表中)。

=ARRAYFORMULA(IF(LEN(B4:N4), MMULT(IFERROR(( N(REGEXMATCH(B4:N9, "ok'd|done|ready|rcvd"))+ N(REGEXMATCH(B4:N9, "active"))/2)/MMULT(N(REGEXMATCH(B4:N9, "[^none]")),TRANSPOSE(ROW(B4:B9)^0)), 0), TRANSPOSE(ROW(B4:B9)^0)),))

2 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(IF(LEN(B3:B9), MMULT(IFERROR((
 N(REGEXMATCH(B3:N9, "ok'd|done|ready|rcvd"))+
 N(REGEXMATCH(B3:N9, "active"))/2)/MMULT( 
 N(REGEXMATCH(B3:N9, "[^none]")), 
 TRANSPOSE(COLUMN(B3:N3)^0)), 0), 
 TRANSPOSE(COLUMN(B3:N3)^0)), ))

0

答案 1 :(得分:1)

  

作为后续问题-如何使相同的内容跨列工作?

=ARRAYFORMULA(TRANSPOSE(IF(LEN(TRANSPOSE(B4:N4)), MMULT(IFERROR((
 N(REGEXMATCH(TRANSPOSE(B4:N16), "ok'd|done|ready|rcvd"))+
 N(REGEXMATCH(TRANSPOSE(B4:N16), "active"))/2)/MMULT( 
 N(REGEXMATCH(TRANSPOSE(B4:N16), "[^none]")), 
 (ROW(B4:B16)^0)), 0), 
 (ROW(B4:B16)^0)), )))

0