计算 Google 工作表中分隔字符串中的客人数量

Counting number of guests in delimited string in Google Sheets

我有一个 Google 表格单元格,其中包含参加活动的人员列表。有些客人会带来朋友。所以单元格 (A1) 可以如下所示:

Ben, Sarah + 2, James , Mary + 5

我需要计算参加的总人数,在本例中为 11。因此我考虑使用以下公式:

=count(SPLIT(SUBSTITUTE(A1,"+",","),","))

但这不起作用,因为它只将数字计为 1 项,并且 COUNT 函数似乎不起作用。

我怎样才能使这项工作正确地给出与会者人数 11?

你可以这样得到总和:

=if(regexmatch(A1,"\+"),sum(ArrayFormula(query(split(transpose(split(A1,",")),"\+"),"select count(Col1), sum(Col2)",0))),if(isblank(A1),"",counta(split(A1,","))))

解释:

  • if(regexmatch(A1,"\+"), something, if(isblank(A1),"",counta(split(A1,",")))) => 如果答案中没有 + 符号,则检查单元格是否为空,如果为空,则打印空白,否则只计算中间有多少人逗号,否则用计算。 (下面的解释)
  • split(A1,",")),"\+") => 红色区域=> 将单元格用逗号分隔,结果如图红色区域
  • split(TRANSPOSE(split(A1,",")),"\+") => 绿色区域 => 将遍历上面的每个结果,并将它们之间带有 + 符号的值分隔到右侧的单元格中,可以在图片中的绿色区域
  • query(split(TRANSPOSE(split(A1,",")),"\+"),"select count(Col1), sum(Col2)",0) => 蓝色区域 => 然后我们将查询 2 列,在左侧我们要计算该列(带有名称的列)中的行数,在下一个我们要对值(加号)求和的列
  • sum(ArrayFormula(query(split(transpose(split(A1,",")),"\+"),"select count(Col1), sum(Col2)",0))) => 黄色区域 => 然后我们将 2 列的值相加得到最终结果

你可以使用下面的公式

=IF(LEN(A2), 
     SUM(COUNTA(SPLIT(A2,",")), 
         IFERROR(SPLIT(REGEXREPLACE(A2,"\D"," ")," "))),"")

使用的函数: