使用 sum 和 countifs 按月和团队在多个列中获得“是”的百分比 - 是否有更简单的方法?

using sum and countifs to get a percentage of 'yes'es across multiple columns by month and team - is there a simpler way?

有人要求我为一些 google 表单回复创建摘要,虽然我有一个可行的解决方案,但我还是觉得必须有一个更优雅的解决方案。

该表格收集与案例检查相关的数据 - 每个月每个团队(有 100 多个团队)必须根据团队中的员工人数检查一定数量的案例,并输入他们检查的每个案例的结果在 google 表格中检查过。设置此功能的团队希望我按团队、月份和表格部分(初步问题、案例记录、结果等)总结数据。现场表格有 8 个部分,从 1-13 个问题,都有 Yes/No/NA/blank 个答案。

(老实说,这不是我设置所有这些的方式,但这不在我的掌控之中!)

因此,他们基本上是在寻找实时的月度摘要,其中团队名称在旁边,部分名称在顶部,完成百分比将与条目保持同步(我们也可以在其中使用importrange 和 query 以在需要时将相关位拉入其他 google sheet 摘要)。

我目前得到的是:

=iferror(sum(countifs('Form Responses'!$B:$B,$A3,'Form 
 Responses'!$F:$F,"Yes",'Form Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)),countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$G:$G,"Yes",'Form
 Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)),countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$H:$H,"Yes",'Form
 Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)),countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$I:$I,"Yes",'Form
 Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)),countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$J:$J,"Yes",'Form
 Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)),countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$K:$K,"Yes",'Form
 Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1)))/(countifs('Form
 Responses'!$B:$B,$A3,'Form Responses'!$E:$E,">="&$B,'Form
 Responses'!$E:$E,"<"&edate($B,1))*6),0)

它有效,但感觉有点像蛮力和无知的解决方案。我试过 countifs 和数组,我看过一个枢轴但我无法获得部分组,我玩过查询但我无法弄清楚如何要求它计算多列中的所有 Yeses立刻。

是否有更优雅的解决方案,或者我必须辞职以设置下一个财政年度的摘要?

编辑:

您可以使用普通数组布尔乘法来实现计数,true 转换为 1,false 转换为 0:

=TO_PERCENT(ARRAYFORMULA(
    SUM((f!F1:K="Yes")*(f!E1:E>=B1)*(f!E1:E<EDATE(B1,1))*(f!B:B=A3))/
    SUM(6*(f!E1:E>=B1)*(f!E1:E<EDATE(B1,1))*(f!B:B=A3))
    )
  )
  • 已将 Form Responses 重命名为 f
  • 分子:总和
    • 问题过滤器(f!F:K =Yes)和
    • 月份过滤器(f!E:E 在 B1 的月份内)和
    • 团队过滤器(B:B = A3)
  • 分母:SUM 的 6 倍
    • 月份过滤器(f!E:E 在 B1 的月份内)和
    • 团队过滤器(B:B = A3)

在您提供的 this sample sheet 上,您会注意到两个新标签。 MK.Retab 和 MK.Summary.

MK.Retab 是 A2 中的一个公式,它 "re-tabulates" 将您所有的调查数据转换为一种更易于分析的格式。该选项卡可以是您实际项目中的 "hidden"。它将永远继续构建 6 列数据集。这将是一种 "back end" sheet,仅用于为任何进一步的下游分析提供数据。

On MK.Summary 是单元格 A1 中的单个公式,它查询来自 MK.Retab 的数据集,并以类似于您建议的格式按团队按月显示“是”的百分比。我将其编码为在左侧显示最近的月份,紧靠团队名称的右侧,并将历史数据推到右侧。尽管人们通常习惯于看到时间从左到右,但我发现相反的方法很好,因为它使您不必横向滚动即可查看最新数据。如果您愿意,可以通过删除在查询字符串的 "order by" 子句中找到的 "desc" 来进行更改。

我发现这种两步解决方案对像您这样的问题很有用,因为虽然摘要可能不完全是您想要的,但根据 [=] 中列出的数据构建公式和分析总是更容易38=] sheet.

至于MK.Retab中的公式,它是基于我前阵子想出的一个方法构造了一个大的vlookup,其中[search key]实际上是一个十进制数序列通过计算真实数据集中的行数并乘以每行需要重复的数据列数来构建。我前段时间制作了一个演示,如果您想更好地了解它的工作原理,我很乐意与大家分享。

您说您的目标是理解这些公式,以便您可以根据需要修改它们。我不确定这会有多容易,但我会尽力回答您对方法或解决方案可能有的任何问题。

我可以告诉你的是,有些公式比它们需要的更复杂,因为你只是使用了 Q1 Q2 Q3 等而不是实际问题。如果你有一个问题列表(比如在其他选项卡上),以及你想要 call/name 相应的 "sections" 的内容,这将使公式变得不那么复杂。就目前而言,我不得不使用第 1 行中单词 "Comments" 的出现来区分一个部分的结束位置和另一个部分的开始位置。不过,这个决定的好处是我写的公式可以向右无限扩展。也就是说,如果您要向此处的样本集添加另外 100 列的问题和答案,公式将能够处理并分解它, 只要有单词 "Comments" 在每个部分之间。

希望所有这些对您有所帮助。