Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 谷歌电子表格的总和总是以上面的单元格结束_Google Sheets - Fatal编程技术网

Google sheets 谷歌电子表格的总和总是以上面的单元格结束

Google sheets 谷歌电子表格的总和总是以上面的单元格结束,google-sheets,Google Sheets,如何创建一个Google电子表格sum(),即使添加了新的单元格,它也总是以上面的单元格结尾?我对每一列都要做几次这样的计算,所以不会有帮助 例如: 在B列,我有几个动态范围,必须求和。B1..B9应在B10上求和,B11..B19应在B20上求和。我要做几十次这样的计算。每隔一段时间,我会在最后一行的下方添加行,并希望将它们添加到总和中。我在第10行之前添加了一个新行(称之为9.1),在第20行之前添加了一个新的raw(我们称之为19.1)。我希望B10包含B1到B9.1的和,B20包含B11

如何创建一个Google电子表格sum(),即使添加了新的单元格,它也总是以上面的单元格结尾?我对每一列都要做几次这样的计算,所以不会有帮助

例如:

在B列,我有几个动态范围,必须求和。B1..B9应在B10上求和,B11..B19应在B20上求和。我要做几十次这样的计算。每隔一段时间,我会在最后一行的下方添加行,并希望将它们添加到总和中。我在第10行之前添加了一个新行(称之为9.1),在第20行之前添加了一个新的raw(我们称之为19.1)。我希望B10包含B1到B9.1的和,B20包含B11:B19.1的和

在excel上,我有一个类似于魅力的选项。但是如何使用谷歌电子表格呢?我尝试使用如下公式:

=SUM(B1:INDIRECT(address(row()-1,column(),false)))   # Formula on B10
=SUM(B11:INDIRECT(address(row()-1,column(),false)))  # Formula on B20
但在谷歌电子表格上,它给出的只是一个#名称错误

我浪费了几个小时试图找到一个解决方案,也许有人能解决? 请告知


阿姆农

您可能正在寻找以下公式:

=总和(间接(“B1:”&地址(行()-1,列(),4))

Google电子表格间接返回对单元格或区域的引用,而据我回忆,Excel间接返回总是对单元格的引用。 考虑到谷歌的间接法确实有一些困难,当你试图在SUM中使用它作为单元格引用时,你想要的是给SUM提供整个范围的总和,例如a1符号:“B1:BX”

您可以通过与EXCEL中相同的方式获得所需的地址(此处的“4”表示行/列相对,默认情况下Google间接返回绝对值):

地址(行()-1,列(),4)

然后使用它通过连接起始单元格为SUM函数准备范围字符串

“B1:&

并用间接法将其包起来,这将返回要求和的区域

参考以下来自Druvision的答案(我还不能评论,我不想增加答案)

每次插入/删除行时,都会进行公式更正,以使所有行看起来像:

=SUM(间接(地址(行()-9,列(),4)和):“&地址(行()-1,列(),4))

您可以在单独的工作表中留出一列来保存变量(我们将其命名为“def”),比如Z,以定义起点,例如。 在Z1中写“B1” 在Z2中写上“B11” 等 然后通过使用索引将其用作总和中的变量:

SUM(间接(索引(def!Z:Z,1,1)&):“&ADDRESS(ROW()-1,COLUMN(),4))
-从B1到计算行求和,因为在Z1中我们有“B1”(索引(…,1,1)中的
1,1

SUM(间接索引(def!Z:Z,2,1)和“&ADDRESS(ROW()-1,COLUMN(),4))
-从B11到计算行的总和,因为在Z2中我们有“B11”(索引(…,2,1)中的
2,1

请注意:

  • 名为“def”的单独工作表-您不希望行插入/删除影响该数据,因此将其保留在一边。用于添加一些验证列表,以及公式中需要的其他内容

  • “Z:Z”符号-整列。你说你有很多这样的公式;)

  • 因此,您可以保留为每个公式定义起始单元格的灵活性,而不受计算表更改的影响

    顺便问一下,编写自定义函数/脚本汇总单元格上方的所有行不是更容易吗?如果您喜欢javascripting,我记得,google电子表格现在有了很好的脚本编辑器。您可以创建一个名为sumRowsAboveMe()的函数,而不仅仅是在工作表中使用它,例如在工作表单元格中使用
    =sumRowsAboveMe()


    注意:你可能必须

    由@PsychoFish提供的答案以正确的方式引导了我。 唯一的问题是,我不得不从每一列和每一个总和中重写公式。这是一个改进的公式,它对同一列上的前9个单元格求和,而不硬编码列或行号:

    =SUM(INDIRECT(ADDRESS(ROW()-9,COLUMN(),4)&":"&ADDRESS(ROW()-1,COLUMN(),4)))
    
    唯一的问题是,如果有人添加或删除一行,我必须重写公式。在这种情况下,我应该相应地将9更改为10或8。

    一般语法:

    =SUM(INDIRECT(cell_reference_as_string1 &":"& cell_reference_as_string2)
    
    例如:

    cell_reference_as_string1 = ADDRESS(ROW(),COLUMN(),4)
    cell_reference_as_string2 = ADDRESS(ROW()-1,COLUMN(),4)
    
    注意 在测试这个答案之后,只有当由于循环依赖性错误导致总和位于不同的列中时,它才会起作用。否则,解决方案是有效的

    这有点像代数,但我们可以利用电子表格右下角的阻力

    =SUM(X:X) - SUM(X2:X)
    
    其中X是您正在使用的列,X2是您的结束点。向下拖动公式,图纸将增加X2,从而更改终点

    *你提到你要做几十次这样的计算。所以为了满足你们的确切需要,我们会减去你们最后的总和,得到我们想要的“中间”范围

    e、 g

    B1..B9应在B10上求和,B11..B19应在B20上求和

    由于前面提到的循环依赖错误,我无法精确地解决它并将总和放在同一行上,但在其他情况下,如果总和需要存储在不同的列中,这可能会起作用

    =SUM(B:B) - SUM(B9:B) //Formula on C10 (Sum of B1..B9)
    =SUM(B:B) - SUM(B19:B) - B10 // Formula on C20 (Sum of B11..B19)
    

    这是基于@PsychoFish的,以下是解决方案:

    =SUM(INDIRECT(SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")&"3:"&ADDRESS(ROW()-1,COLUMN(),4)))
    
    只需替换行的“3:”即可开始求和


    @PsychoFish是正确的,但无法拖动和复制,因为该列是文字和硬编码的,@Druvision方向正确,但错误。。。基本上,最终的问题是必须重新输入范围,然后反复滑动公式

    你们让这件事变得更难了。我只需在“sum”行上方留下几行空行(您可以将它们格式化为填充颜色或其他内容,以防止它们被无意中使用),然后在这些特殊行上方添加新行。

    我喜欢@abernier如何描述一般解决方案。到目前为止,只使用基于字母的A1表示法(A为第一列,1为第一行)。它保持混乱
    =SUM(INDIRECT("R1C"&COLUMN()&":R"&(ROW()-1)&"C"&COLUMN(), FALSE))