【问题标题】:Excel: Sumifs Formula, with possible Index Match?Excel:Sumifs 公式,可能有索引匹配?
【发布时间】:2016-05-18 01:27:29
【问题描述】:

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

第 1 阶段有父母的孩子:$0

第 2 阶段有父母的孩子:80 美元

第 3 阶段有父母的孩子:10 美元

提前感谢您的帮助!

Example Data Set

或者作为文本:

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

【问题讨论】:

  • ASCII/文本中的样本数据比屏幕截图更可取。
  • 上面的编辑是否有效?
  • 如果我下面的回答是误会,那第二阶段有父母的孩子的总和不是80吗?因为父母 8 和父母 2 都处于第 2 阶段?并且父母处于阶段 1 的孩子为 0,因为没有父母处于阶段 1?
  • 对不起,你是对的......我的错误。是的,所以根据上面的数据应该是:
  • 第 1 阶段有父母的孩子:0 美元,第 2 阶段有父母的孩子:80 美元,第 3 阶段有父母的孩子:10 美元

标签: excel excel-formula sumifs


【解决方案1】:

假设您的桌子在 A1 到 E16 之间。

生成填充空白阶段的辅助列。假设空白阶段与父 ID 具有相同的阶段,则将填充空白阶段。因此在 F1 中放置以下公式并向下复制到 F16:

=IF(D2<>"",D2,VLOOKUP(C2,$A$2:$D$16,4,0))

现在我们可以使用 sumproduct 并获取独生子女和第 2 阶段的总数。在 H1 到 J3 中,我构建了您要查找的内容的汇总表。在 H1 到 J1 中,我使用了标题,在 H2 到 I 4 中,我定义了我要搜索的内容。在 J2 到 J4 中,我使用了以下公式来确定财务状况:

Type   |  Phase  |  Finance
Child  |    1    |  =SUMPRODUCT(($B$2:$B$16=H2)*($F$2:$F$16=I2)*$E$2:$E$16)
Child  |    2    |  =SUMPRODUCT(($B$2:$B$16=H3)*($F$2:$F$16=I3)*$E$2:$E$16) 
Child  |    3    |  =SUMPRODUCT(($B$2:$B$16=H4)*($F$2:$F$16=I4)*$E$2:$E$16)

sumproduct 仅对表中存在 CHILD(如 H 列中定义)和 phase 等于 I 中定义的数字的行求和,并且仅对财务列中对应的值求和。如果 B 中不存在子元素,或者 F 中的相位不等于正在搜索的数字,则该行的值为 0。

概念证明

【讨论】:

  • 赞成,尽管我会避免调用列 PHASE 而是使用“父阶段”以避免混淆。而且我也会使用和索引/匹配而不是 vlookup,但这可能是因为我喜欢索引/匹配。
  • @StianYttervik 同意索引/匹配更通用,但在这种情况下,数据以 vlookup 的方式排列,输入的参数更少。至于列命名,最初我把它留空....变得懒惰,只是重新输入了旧的...至少我不小心把帽子锁上了! 8)
  • 非常感谢,答案有效。出于争论的原因,是否可以在不输入新列的情况下完成此操作(就像您使用 F 列一样)并且公式中保留了所有逻辑?
  • 我目前不知道。我看看能不能让别人看看。
  • @Andy_NPT 看到我的回答。转发,你打电话我接了。
【解决方案2】:

这是一个数组公式:

=SUM(IF($C$2:$C$16<>"",(LOOKUP($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))

作为数组公式,离开编辑模式时需要使用 Ctrl-Shift-Enter 确认。如果操作正确,Excel 会在公式周围加上{}

【讨论】:

  • 太棒了。我还有一个问题。如果您添加这样的 if/and 语句,该公式是否有效:
  • =SUM(IF(AND($C$2:$C$16"",$B$2:$B$16="CHILD"),(LOOKUP($C$2:$C$16 ,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))
  • 我可能会遇到这样一种情况,您会得到两种类型的“子”数据,而公式需要区分......我正在尝试使用我的数据集,但它不太有效。跨度>
  • 数组公式不喜欢AndOr。所以我们需要在他们的地方使用*+所以=SUM(IF(($C$2:$C$16&lt;&gt;"")*($B$2:$B$16="CHILD"),(LOOKUP($C$2:$C$16,$A$2:$A$16,$D$2:$D$16)=G2)*$E$2:$E$16))@Andy_NPT
猜你喜欢
  • 2015-07-14
  • 2017-08-16
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 2019-08-12
  • 1970-01-01
相关资源
最近更新 更多