Google sheets 在一列中求和,直到它满足另一个类别

Google sheets 在一列中求和,直到它满足另一个类别,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我正在建立一个谷歌表来记录我的钱。 我对这一切都很陌生,我正在学习如何做一些事情 我想建立一个表格,在那里我可以有绿色的类别和它们的子类别。所以我希望能够将子类别的总和放在它们的父类别前面 此外,这是一个模板,可能会随着时间的推移而改变,所以我希望它是模块化的。否则,如果我添加一个新的子类别,甚至是一个新的类别,它会很简单 谢谢你的帮助 这是我设法找到和编辑的,也许这是一条很棒的路径=如果A3美元=✹;SUME3:INDEXE3:E;匹配正确;A3:A=✫;3. 但实际上,它对a列中有一个星的每

我正在建立一个谷歌表来记录我的钱。 我对这一切都很陌生,我正在学习如何做一些事情

我想建立一个表格,在那里我可以有绿色的类别和它们的子类别。所以我希望能够将子类别的总和放在它们的父类别前面

此外,这是一个模板,可能会随着时间的推移而改变,所以我希望它是模块化的。否则,如果我添加一个新的子类别,甚至是一个新的类别,它会很简单

谢谢你的帮助

这是我设法找到和编辑的,也许这是一条很棒的路径=如果A3美元=✹;SUME3:INDEXE3:E;匹配正确;A3:A=✫;3. 但实际上,它对a列中有一个星的每一行求和。直到遇到太阳它才会停止


另外,我知道它是这样工作的,但它有点太复杂了,我需要帮助来理解它…

这里有一个函数可以工作:

=
if(
  indirect("A"&(row()+1))="✫",
  sum(
    indirect(
      "E"&(row()+1)&":E"&vlookup(
        "✹",
        {
          indirect("A"&(row()+1)&":A"),
          arrayformula(row(indirect("A"&(row()+1)&":A")))
        },
        2,
        FALSE
      )-1
    )
  ),
  0
)
基本的想法是寻找下一个✹. 然后获取两行之间的范围并添加它们

公式简析 步骤1:获取从此行之后开始的值 这可以用间接的方法来实现。基本上是A:A

行数它只是行;下一行+1

因此,使用间接法,我们得到:

=
indirect("A"&(row()+1)&":A")
步骤2:查找下一个类别 我们想知道下一个类别的编号。这可以使用vlookup实现

我们要做的是用第一列上的值和第二列上的列数创建一个数组。要获取值行的行数,可以使用行。因此,它希望:

{
  <range>,
  arrayformula(row(<range>))
}
现在我们需要添加vlookup:

=
vlookup(
  "✹",
  {
    indirect("A"&(row()+1)&":A"),
    arrayformula(row(indirect("A"&(row()+1)&":A")))
  },
  2,
  FALSE
)
这基本上就是得到第一个案例的价值✹. 现在我们有了类别下一行的编号

步骤3:得到中间的范围 现在我们有了这个值,我们可以得到要求和的值的范围。这将是E:E或具有以下功能:

indirect(
  "E"&<next row>&":E"&<next category row>-1
)
第四步:求和 现在我们可以把所有的加起来。这里没什么复杂的

步骤5:为空类别添加条件 某些类别为空,因此我们需要检查下一行是否为条目。如果满足以下条件,可以使用简单的

if(
  indirect("A"&(row()+1))="✫",
  <sum formula>,
  0
)
所以,如果你把一切都放在一起,你就会得到结果

最后的想法 尽管这个公式看起来很庞大,但也不太复杂。试着调查一下,如果有什么不清楚的地方,请告诉我

参考文献
下面是一个有效的函数:

=
if(
  indirect("A"&(row()+1))="✫",
  sum(
    indirect(
      "E"&(row()+1)&":E"&vlookup(
        "✹",
        {
          indirect("A"&(row()+1)&":A"),
          arrayformula(row(indirect("A"&(row()+1)&":A")))
        },
        2,
        FALSE
      )-1
    )
  ),
  0
)
基本的想法是寻找下一个✹. 然后获取两行之间的范围并添加它们

公式简析 步骤1:获取从此行之后开始的值 这可以用间接的方法来实现。基本上是A:A

行数它只是行;下一行+1

因此,使用间接法,我们得到:

=
indirect("A"&(row()+1)&":A")
步骤2:查找下一个类别 我们想知道下一个类别的编号。这可以使用vlookup实现

我们要做的是用第一列上的值和第二列上的列数创建一个数组。要获取值行的行数,可以使用行。因此,它希望:

{
  <range>,
  arrayformula(row(<range>))
}
现在我们需要添加vlookup:

=
vlookup(
  "✹",
  {
    indirect("A"&(row()+1)&":A"),
    arrayformula(row(indirect("A"&(row()+1)&":A")))
  },
  2,
  FALSE
)
这基本上就是得到第一个案例的价值✹. 现在我们有了类别下一行的编号

步骤3:得到中间的范围 现在我们有了这个值,我们可以得到要求和的值的范围。这将是E:E或具有以下功能:

indirect(
  "E"&<next row>&":E"&<next category row>-1
)
第四步:求和 现在我们可以把所有的加起来。这里没什么复杂的

步骤5:为空类别添加条件 某些类别为空,因此我们需要检查下一行是否为条目。如果满足以下条件,可以使用简单的

if(
  indirect("A"&(row()+1))="✫",
  <sum formula>,
  0
)
所以,如果你把一切都放在一起,你就会得到结果

最后的想法 尽管这个公式看起来很庞大,但也不太复杂。试着调查一下,如果有什么不清楚的地方,请告诉我

参考文献 尝试:

尝试:


共享一份您的sheet@player0添加链接我投票结束此问题,因为这是“解决我的家庭作业”类型的问题。请共享您的sheet@player0添加了一个链接我投票决定结束这个问题,因为这是一个“解决我的家庭作业”类型的问题。看起来效果很好,为了正确理解它,我得查一下,谢谢!似乎工作得很好,我将不得不查找它,以便正确理解它,谢谢!你好,马蒂,非常感谢所有对我有很大帮助的推荐信。我要潜入其中请注意,player0的答案可能更简单。嗨,Martí,非常感谢所有对我有很大帮助的参考资料。我要潜入其中请注意,player0的答案可能更简单。