Google sheets 谷歌电子表格的总和总是以上面的单元格结束
如何创建一个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上,我有一个类似于魅力的选项。但是如何使用谷歌电子表格呢?我尝试使用如下公式: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
=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
)
请注意:
=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))