数组公式根据 table 中具有关联值的单元格的匹配条件计算范围平均值

array formula to calculate range average based on matching criteria of cells with associated values in a table

我正在努力更新 google 电子表格工作簿,使其具有一些附加功能。

我有各种流经部门的项目。我想根据他们的状态来衡量进度,从下拉菜单中选择。这样我们就可以看到我们在工作上的进展情况。

我有一个示例文件,其中包含工作版本和我要解决的新版本: Example File

原始版本有状态字和关联值。在下拉列表中选择状态 - 然后根据值和条目数计算项目和部门的平均值。
条目包括:完成 = 100%、活动 = 50%、队列 = 0%、None = 忽略值

在新版本中,我想在 table 中包含更多状态词和值,以便我可以根据项目需要更新它们。

工作版本中的公式为:

=ARRAYFORMULA(TRANSPOSE(IF(LEN(TRANSPOSE(C10:10)),MMULT(IFERROR((N(REGEXMATCH(TRANSPOSE(C10:O), "Done"))+N(REGEXMATCH(TRANSPOSE(C10:O),"Active"))/2)/MMULT(N(REGEXMATCH(TRANSPOSE(C10:O),"[^None]")),(ROW(C10:C)^0)),0),(ROW(C10:C)^0)), )))

工作版本截图:

具有额外 table 值的新版本:

感谢@player0 的原始版本。

如果将状态 None 的值更改为 #N/A,则可以使用以下公式:

对于列

=ArrayFormula(IFERROR(MMULT(COLUMN($A:$J)^0,IFERROR(VLOOKUP(C16:O25,$A:$B,2,false),0))/MMULT(COLUMN($A:$J)^0,--(ISNUMBER(VLOOKUP(C16:O25,$A:$B,2,false)))),""))

行数

=ArrayFormula(IFERROR(MMULT(IFERROR(VLOOKUP(C16:O25,$A:$B,2,false),0),ROW(A1:A13)^0)/MMULT(--(ISNUMBER(VLOOKUP(C16:O25,$A:$B,2,false))),ROW(A1:A13)^0),""))