【问题标题】:QUERY Function: How to count with multiple counting criteriasQUERY 功能:如何使用多个计数条件进行计数
【发布时间】:2021-05-09 08:19:26
【问题描述】:

[目标] 我正在尝试计算某一列中每位员工的票数,该列在特定周内的状态为“已完成”、“已完成(范围)”或“已完成(销售)”。在另一列中,我还想在没有标准的情况下计算特定周的票数。我从中提取票数的数据具有以下列名称。

A 列:日期, B 列:票证 ID, E 列:员工, H 列:完成的一周 K栏:周

在公式中,您会注意到它指的是单元格 H1,该单元格包含当前周,即以下公式:=TODAY()-MOD(TODAY()-2,7)-1

[当前公式]

=QUERY('Data'!$A$3:$J,"Select E,
 COUNT(B) where D matches 'Finished|Finished \(Scope\)|Routed \(Sales\)'
 AND H = "&H1&" GROUP BY E LABEL COUNT(B) 'Total Finished Tickets'",0)

[应该是什么样子] 我创建了一个示例电子表格,您可以参考。 链接:https://docs.google.com/spreadsheets/d/1MQLgt_SSbUIKv1rEwx-Y21hooxNOOgcUm_j1rFehHdg/edit?usp=sharing

[问题] 我能够创建一个表格来计算每位员工的工单数量,其状态为“已完成”或“已完成(范围)”或“已发送(销售)”。哪个是“当前结果”表(链接:https://docs.google.com/spreadsheets/d/1MQLgt_SSbUIKv1rEwx-Y21hooxNOOgcUm_j1rFehHdg/edit#gid=0)。

但是,当我尝试添加另一个计数标准时,它给了我错误,我不明白如何正确地完成这项工作。我想看起来像共享链接中标题“理想结果”的表格。有人可以帮忙吗?

【问题讨论】:

  • 带有通配符匹配的COUNTISF() 怎么样?
  • 考虑共享一个可公开编辑的sample spreadsheet,其中包含逼真的数据,并在那里显示您手动输入的预期结果。
  • 您能否分享一份您的工作表副本,其中包含正确列中的一小部分数据,将实际名称替换为 Name1、Name2、Name3 等
  • 大家好,非常感谢您回答我的问题。我创建了一个样本表(链接:docs.google.com/spreadsheets/d/…)。

标签: google-sheets google-sheets-formula


【解决方案1】:

您可以使用pivot 子句按如下所示按状态列进行细分:

=query(
  Data!A3:J, 
  "select E, count(E) 
   where H = " & E4 & " 
   group by E 
   pivot D 
   label E 'Employee' ", 
  0 
)

缺点是必须单独计算总计,但这可以通过简单的sum() 公式来完成。

或者,先获取总数,然后查找已完成票证的数量,如下所示:

=query(
  Data!A2:J, 
  "select E, count(D) 
   where H = " & E4 & " 
   group by E 
   label E 'Employee', count(D) 'Total new tickets' ", 
  0 
)
=arrayformula( 
  iferror( 
    vlookup( 
      E12:E, 
      query(
        Data!A2:J, 
        "select E, count(D) 
         where H = " & E4 & " 
         and (D = 'Finished' or D = 'Finished (Scope)')
         group by E 
         label count(D) 'Finished tickets' ", 
        1 
      ), 
      2, 
      false 
    ) 
  ) 
)

请注意,这仅用于说明如何将数据汇总到报告中。您的问题不清楚应为每种类型的聚合计算哪些状态值。数据中没有出现状态为Routed (Sales) 的行,我看不出您显示的预期结果如何从数据中得出。

查看您的sample spreadsheet

H1,其中单元格包含当前周也就是这个公式

=TODAY()-MOD(TODAY()-2,7)-1

您可能想尝试weeknum() 功能。

【讨论】:

  • 嗨@doubleunary,非常感谢您的回复。我已经尝试过您的解决方案,但这不是我想要的结果。所以我更新了我的问题并分享了一个示例电子表格(链接:docs.google.com/spreadsheets/d/…),以便更清楚地了解我想要做什么。希望你能帮忙。
  • 编辑了答案并在示例电子表格中插入了公式。
  • 嗨@doubleunary,感谢您检查并重新回答。我能够解决这个问题!
【解决方案2】:

要获得两个独立的计数,您不能使用 Where 子句,因为这会从两个计数中排除案例,但您可以使用 Query 不计算空单元格的事实,如下所示:

=ArrayFormula(query({if(regexmatch(D3:D,"Finished$|Finished \(Scope\)$|Routed \(Sales\)$"),true,),E3:E,if(K3:K>=H1,true,)},"select Col2,count(Col3),count(Col1) where Col2 is not null group by Col2 label count(Col1) 'Finished', count(Col3) 'New'",1))

【讨论】:

  • 嗨@Tom Sharpe,很抱歉我的问题不够清楚。查询尝试引用的数据有两种不同类型的日期。有“周”列和“已完成周”列。我们可以使用这些日期来提取正确的数据吗?我更新了我的问题并创建了一个示例电子表格 (docs.google.com/spreadsheets/d/…)。
  • 嗨 - 我还是有点困惑 - 看起来所有示例数据都已完成,但您的标准是“已完成”、“已完成(范围)”或“已完成(销售)”这样就排除了“完成(销售)”?我仍然无法完全匹配您的数字,但稍后我会发布经过编辑的答案。
  • 嗨@Tom Sharpe,我真诚地为这里的延误道歉。我试过了,我能够解决这个问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2017-09-06
  • 2016-05-21
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多