是否有一个Excel函数将多个值相加,每个值乘以不同的查找值?

是否有一个Excel函数将多个值相加,每个值乘以不同的查找值?,excel,excel-formula,lookup,Excel,Excel Formula,Lookup,我正在建立一个Excel工作簿,将材料使用作为输入。我希望能够将这些输入与我在表格中输入的已知材料成分相乘 目前我一直在做=使用材料1*vlookup(材料1,材料表,索引,假)+使用材料2*vlookup(材料2,材料表,索引,假) 考虑到我有大量的材料使用,有没有更简单的方法?我真的不想让同一个公式在同一个单元格中重复多达30次,只是为了总结 我想要一个公式,它将自动乘以材料使用量*查找成分并对所有材料输入的公式求和。这里是另一种方法 =SUMPRODUCT(SUMIF(F6:F8,A6:

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

目前我一直在做=使用材料1*vlookup(材料1,材料表,索引,假)+使用材料2*vlookup(材料2,材料表,索引,假)

考虑到我有大量的材料使用,有没有更简单的方法?我真的不想让同一个公式在同一个单元格中重复多达30次,只是为了总结

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

这里是另一种方法

=SUMPRODUCT(SUMIF(F6:F8,A6:C6,G6:G8),A7:C7)
…这需要通过刚进入确认

希望这有帮助

还有另一种方法

=SUMPRODUCT(SUMIF(F6:F8,A6:C6,G6:G8),A7:C7)
…这需要通过刚进入确认


希望这有帮助

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

{=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)}
另一个解决方案:

{=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)}
如注释中所述:查找表必须按升序排序。此外,如果查找值不存在匹配项,它将查找近似匹配项,这可能不是期望的结果

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

{=SUM(LOOKUP(A1:A5000,F1:F4,G1:G4)*B1:B5000)}
5.237412秒过去了| 16325977个滴答声过去了

{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}
=SUMPRODUCT(SUMIF(F1:F4,A1:A5000,G1:G4),B1:B5000)
7.941025秒过去了| 24753637秒过去了

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

12.338439秒过去了| 38461185秒过去了

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

{=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)}
{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}
=SUMPRODUCT(SUMIF(F1:F4,A1:A5000,G1:G4),B1:B5000)
另一个解决方案:

{=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)}
如注释中所述:查找表必须按升序排序。此外,如果查找值不存在匹配项,它将查找近似匹配项,这可能不是期望的结果

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

{=SUM(LOOKUP(A1:A5000,F1:F4,G1:G4)*B1:B5000)}
5.237412秒过去了| 16325977个滴答声过去了

{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}
=SUMPRODUCT(SUMIF(F1:F4,A1:A5000,G1:G4),B1:B5000)
7.941025秒过去了| 24753637秒过去了

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


12.338439秒已过去| 38461185秒已过去

请创建一些模拟数据和预期的输入/输出。这将帮助我们理解。当然,假设我有材料X、Y和Z。每种材料都含有一定量的化学物质a。例如,X含有10%的a,Y含有15%的a,Z含有20%的a。如果我知道我用了20加仑的X、Y和Z,我想用这个公式在表格中查找每种材料中已知的化学物质a的含量。然后,我希望公式是XA+YA+Z*A的和。20 gal*10%+20 gal*15%+20 gal*20%。应该使用添加到问题本身的附加信息。还要创建数据和预期输出的表格布局。文字比桌子更难想象。我附上了一张截图,上面有一个我到目前为止所做工作的快速示例。它实现了目标,我只是好奇是否有更简单的方法来实现这一点,因为我需要计算的材料超过3种。请创建一些模拟数据和预期的输入/输出。这将帮助我们理解。当然,假设我有材料X、Y和Z。每种材料都含有一定量的化学物质a。例如,X含有10%的a,Y含有15%的a,Z含有20%的a。如果我知道我用了20加仑的X、Y和Z,我想用这个公式在表格中查找每种材料中已知的化学物质a的含量。然后,我希望公式是XA+YA+Z*A的和。20 gal*10%+20 gal*15%+20 gal*20%。应该使用添加到问题本身的附加信息。还要创建数据和预期输出的表格布局。文字比桌子更难想象。我附上了一张截图,上面有一个我到目前为止所做工作的快速示例。它实现了目标,我只是好奇是否有更简单的方法来实现这一点,考虑到我有3种以上的材料需要计算。我想得太多了。这个方法唯一需要注意的是表查找必须是唯一的,但在这个例子中可能是唯一的。@ScottCraner是的,我应该说清楚。谢谢斯科特。@learnAsWeGo不,它太复杂了,而且也是一个数组公式。这不值得保留,因为这不是我建议的方法。我想得太多了。这个方法唯一需要注意的是表查找必须是唯一的,但在这个例子中可能是唯一的。@ScottCraner是的,我应该说清楚。谢谢斯科特。@learnAsWeGo不,它太复杂了,而且也是一个数组公式。它不值得保留,因为它不是我建议的方法。不过,还应该提到的是,查找表必须按升序排序。此外,如果查找值不存在匹配项,它将查找近似匹配项,这可能不是期望的结果。@Domenic您完全正确。我喜欢测试这些并寻找最快的解决方案。为了我的生命,我不能想出比你更好的东西!我给了你一个+1:-)@Domenic又找到了一个。复杂但有效。学习了如何从进程中的索引返回数组。这个问题很有趣。仍然最喜欢你的答案。
LOOKUP
版本更快并不奇怪,因为它使用二进制搜索。但令人惊讶的是,
INDEX
SUMIF
更快。非常有趣,谢谢分享结果。不过也应该提到,查找表必须按升序排序。此外,如果查找值不存在匹配项,它将查找近似匹配项,这可能不是期望的结果。@Domenic您完全正确。我喜欢测试这些并寻找最快的解决方案。为了我的生命,我不能想出比你更好的东西!我给了你一个+1:-)@Domenic又找到了一个。复杂但有效。学习了如何从进程中的索引返回数组。这个问题很有趣。仍然喜欢你的答案b
{=SUM(INDEX(G1:G4,N(IF(1,MATCH(A1:A5000,F1:F4,0))))*B1:B5000)}
=SUMPRODUCT(SUMIF(F1:F4,A1:A5000,G1:G4),B1:B5000)