我想在谷歌脚本编辑器中为电子表格制作一个小脚本,根据其他单元格求和单元格。类似于:
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))。