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



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

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

我想对包含某个字符的单元格求和。这是我问题的一个例子。我该怎么做?

您不需要脚本。你只是在描述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)

要求所有标题中有"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)))

示例表

当然,Matt提出的SUMIF()同样有效(而且肯定要简单得多)。要向下拖动公式,请使用美元符号"冻结"标题行,例如:sumif($B$3:$P$3,"A",B4:P4))。

最新更新