首页 > 解决方案 > 具有多个级别的 Countif 和 A​​rrayFormula

问题描述

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

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

'queue' - 它在排队等待完成并且压低了平均值

'active' - 处理中并提供平均值的一半

'done', 'ok'd', 'rcvd' - 完成并有助于最终平均数 'none' - 表示该部门在这项工作中不活跃,不应计入最终平均数。

公式为:

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

标签: regexgoogle-sheetscountifgoogle-sheets-formulaarray-formulas

解决方案


=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


推荐阅读