制作一个脚本来有条件地对单元格求和

时间:2015-11-19 18:48:59

标签: google-apps-script google-sheets

我想在谷歌脚本编辑器中为电子表格制作一个小脚本,根据其他单元格汇总单元格。类似的东西:

IF (A2:P2)==Q2{
   SUM (A3:P3)}

我想对包含特定字符的单元格求和。这是example我的问题。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您不需要需要脚本。您只是在描述SUMIF

  

返回范围内的条件和。

使用您的工作表副本我使用此公式获得了您想要的结果

=sumif(B3:P3,"A",B4:P4)

然后你可以使用绝对单元格引用来更容易地将其复制下来。

=sumif($B$3:$P$3,"A",B4:P4)

问题已更改

由于您更改了源表,因此您会询问相关但不同的问题。和以前一样......但是你不需要一个脚本。您可以使用COUNTIFS()。你有两个计数标准。计算单元格是否包含字母,如果标题行包含数字,则计数。我们将其分解为两个条件集。

=COUNTIFs(B3:P3,Q2,B2:P2,1)

Q2是包含“A”的单元格,1是我们正在计数的标题列。

为了通过简单的拖放将其向下移动,您仍然需要在不移动的单元格中使用绝对引用。 Q2和标题行具体。

=COUNTIFs(B3:P3,$Q$2,$B$2:$P$2,1)

答案 1 :(得分:2)

要使具有' A'的所有列的总和(每行一行)。在标题中,尝试在Q4:

=ArrayFormula(MMULT(N(IF(B3:P3="A", B4:P11,)) , transpose(N(B3:P3="A"))))

更改' A'到' B'等等...所有B'

的总和

如果您希望在添加新行时自动展开结果,请使用如下公式:

=ArrayFormula(IF(LEN(A4:A), MMULT(N(IF(B3:P3="A", B4:P,)) , transpose(N(B3:P3="A"))),))

编辑:根据新信息,我将公式更新为:

=ArrayFormula(MMULT((B2:P2=row(B3:B10)-2)*(B3:P10="A"), TRANSPOSE(COLUMN(B2:P2)^0)))

Example sheet

当然,马特提出的SUMIF()同样有效(并且肯定更简单)。要拖动公式,请使用美元符号“冻结”#39;标题行,例如:sumif($ B $ 3:$ P $ 3," A",B4:P4))。