Excel:Sumifs公式,是否有可能的索引匹配?

Excel:Sumifs公式,是否有可能的索引匹配?,excel,excel-formula,sumifs,Excel,Excel Formula,Sumifs,我正在尝试创建一个SUMIFS,该SUMIFS具有检查数据范围内“子”行的智能,然后使用“父”ID号(列在子行中)检查父数据和总和。我在下面插入了一张表格的图片,它给出了一个虚拟数据集。这种公式的预期结果是: 阶段1中有父项的子项:$0 第二阶段中有父母的儿童:$80 第三阶段中有父母的儿童:$10 提前感谢您的帮助 或作为文本: ID Type Parent ID Phase Finances 1 Single 1 $10 2 P

我正在尝试创建一个SUMIFS,该SUMIFS具有检查数据范围内“子”行的智能,然后使用“父”ID号(列在子行中)检查父数据和总和。我在下面插入了一张表格的图片,它给出了一个虚拟数据集。这种公式的预期结果是:


阶段1中有父项的子项:$0

第二阶段中有父母的儿童:$80

第三阶段中有父母的儿童:$10

提前感谢您的帮助

或作为文本:

ID  Type    Parent ID   Phase   Finances
1   Single              1       $10
2   Parent              2       $10
3   Child   2                   $10
4   Single              3       $10
5   Parent              3       $10
6   Child   5                   $10
7   Single              1       $10
8   Parent              2       $10
9   Child   8                   $10
10  Child   8                   $10
11  Child   8                   $10
12  Child   8                   $10
13  Child   8                   $10
14  Child   8                   $10
15  Child   8                   $10

假设您的表格位于A1到E16之间

生成一个辅助列,填充空白阶段。空白相位将被填充,假设它们具有与父ID相同的相位。因此在F1中,下面的公式复制到F16:

=IF(D2<>"",D2,VLOOKUP(C2,$A$2:$D$16,4,0))
sumproduct仅对表中有子项(如第H列所定义)且阶段等于第I列所定义数字的行进行合计,并且仅对财务列中对应的值进行合计。如果B中不存在子级或F中的阶段不等于正在搜索的数字,则该行的值为0

概念证明


这里是一个数组公式:

=SUM(IF($C$2:$C$16<>"",(LOOKUP($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))
=总和(如果($C$2:$C$16)”(查找($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))
作为数组公式,在离开编辑模式时需要使用Ctrl-Shift-Enter确认。如果操作正确,Excel将在公式周围放置
{}


ASCII/文本中的示例数据比屏幕截图更可取。上面的编辑是否有效?如果我下面的回答是一个误解,那么第2阶段中有父母的孩子的总数不是80吗?因为父8和父2都处于第2阶段?阶段1中有父项的子项为0,因为没有父项在阶段1中?对不起,你说得对。。。我的错误。是的,所以根据上面的数据,应该是:第一阶段有家长的孩子:$0第二阶段有家长的孩子:$80第三阶段有家长的孩子:$10向上投票,尽管我会避免调用列阶段,而是选择“家长阶段”以避免混淆。我也会使用And index/match而不是vlookup,但这可能是因为我喜欢index/match。@Stianytervik同意index/match更通用,但在这种情况下,如果数据按vlookup的方式排列,则输入的参数更少。至于列命名,最初我是空白的…变得懒惰了,只是重新输入了旧的…至少我不小心打开了封盖锁!8) 这是非常感谢和答案的工作。为了参数起见,是否可以在不输入新列(如F列)的情况下执行此操作,并且公式中保留了所有逻辑?我目前不知道这一点。“我看看能不能让别人看一下。”安迪:我想知道我的答案。我接了你的电话,太棒了。我还有一个问题。如果你添加这样一个if/and语句,那么这个公式会起作用吗:=SUM(if(and($C$2:$C$16“,$B$2:$B$16=“CHILD”),(LOOKUP($C$2:$C$16,$a$2:$D$16)=G2)*$E$2:$E$16))我可能会遇到这样的情况,你会得到两种类型的“CHILD”数据,这个公式需要加以区分。。。。我正在尝试我的数据集,但它不太有效。数组公式不喜欢
。所以我们需要在它们的位置使用
*
+
,所以
=SUM(如果($C$2:$C$16“)*($B$2:$B$16=“CHILD”),(查找($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))
@Andy\u
=SUM(IF($C$2:$C$16<>"",(LOOKUP($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))