【问题标题】:Is there an Excel function that sums multiple values each multiplied by a different lookup value?是否有一个 Excel 函数将多个值相加,每个值乘以不同的查找值?
【发布时间】:2019-07-01 14:42:46
【问题描述】:

我正在设置一个 Excel 工作簿,它将材料使用情况作为输入。我希望能够将这些输入与我在表格中输入的已知材料成分相乘。

目前我一直在做=usage material1*vlookup(material1,material table,index,false)+usage material2*vlookup(material2,material table,index,false).....

考虑到我有大量的材料使用情况,有没有更简单的方法来做到这一点?我真的很想避免在同一个单元格中重复最多 30 次相同的公式,只是为了总结一下。

我想要一个公式,它会自动乘以材料使用 * 查找成分并将所有材料输入的公式相加。

【问题讨论】:

  • 请创建一些模拟数据和预期的输入/输出。这将有助于我们理解。
  • 当然,假设我有材料 X、Y 和 Z。每种材料都包含一定量的化学物质 A。例如,X 包含 10% A,Y 包含 15% A,Z 包含20% A。如果我知道我使用了 20 加仑的 X、Y 和 Z,我希望通过公式来查找表格中已知的每种材料中化学 A 的含量。然后,我希望公式对 XA+YA+Z*A 求和。 20 加仑 * 10% + 20 加仑 * 15% + 20 加仑 * 20%。
  • 应使用edit 将其他信息添加到问题本身。还要创建数据和预期输出的表格布局。文字比表格更难形象化。
  • 我附上了一张截图,上面有一个我迄今为止所做的快速示例。它实现了目标,我只是想知道是否有更简单的方法可以做到这一点,因为我需要计算的材料不止 3 种。

标签: excel excel-formula lookup


【解决方案1】:

这是另一种方式...

=SUMPRODUCT(SUMIF(F6:F8,A6:C6,G6:G8),A7:C7)

...这需要通过 ENTER 来确认。

希望这会有所帮助!

【讨论】:

  • 我想多了。此方法的唯一警告是表查找必须是唯一的,但在这种情况下可能会。
  • @ScottCraner 是的,我应该说清楚。谢谢斯科特。
  • @learnAsWeGo 不,它过于复杂,而且也是一个数组公式。这不值得保留,因为我不建议这样做。
【解决方案2】:

快速但有点复杂的解决方案:

{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}

另一种解决方案:

{=SUM(LOOKUP(A1:A5000,F1:F4,G1:G4)*B1:B5000)}

如 cmets 中所述:查找表必须按升序排序。此外,如果查找值不存在匹配项,它会找到一个近似匹配项,这可能不是所需的结果。

执行 5000 次公式的速度测试:

{=SUM(LOOKUP(A1:A5000,F1:F4,G1:G4)*B1:B5000)}

经过 5.237412 秒 |已过去 16,325,977 个刻度

{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}

经过 7.941025 秒 | 24,753,637 个刻度流逝

=SUMPRODUCT(SUMIF(F1:F4,A1:A5000,G1:G4),B1:B5000)

经过 12.338439 秒 |已过去 38,461,185 个刻度

【讨论】:

  • 还应该提到,查找表必须按升序排序。此外,如果查找值不存在匹配项,它会找到一个近似匹配项,这可能不是所需的结果。
  • @Domenic 你是绝对正确的。我喜欢测试这些并寻找最快的解决方案。为了我的生活,我想不出比你更好的东西!我给了你一个 +1 :-)
  • @Domenic 又找到了一个。复杂但有效。学习了如何从进程中的索引返回一个数组。这个问题很有趣。还是最喜欢你的回答。
  • LOOKUP 版本更快并不奇怪,因为它使用二进制搜索。但令人惊讶的是INDEXSUMIF 快。非常有趣,感谢分享结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2013-12-17
  • 2018-08-11
相关资源
最近更新 更多