Excel问题:使用两个不同的表执行SUMPRODUCT,SUMIF

时间:2018-12-02 12:23:42

标签: excel vba excel-vba excel-formula

我有两个桌子

表1: 单位(第1栏):aa; bb; cc; dd 可靠性(第2栏):90%; 40%; 100%; 2%

表2: 产品(第1栏):A; B; C;一种;一种, 单位(第2栏):aa; bb; cc; bb; dd 吨(第3栏):10; 20; 30; 40; 30

对于产品A,如何考虑到单个公式中的可靠性,如何计算单位为aa,bb和dd的总产量?

A吨的计算很明确:10 * 90% + 40 * 40% + 30 * 2%,但是当数据像我的一样是随机顺序时,很难做到这一点。

我怀疑可能需要SUMPRODUCT或SUMIF。我非常擅长Excel,并且真的认为这是不可能的,所以祝你好运。

编辑:我必须声明我要使用一个公式,而没有其他列来简化计算。

对此将提供任何帮助。

2 个答案:

答案 0 :(得分:0)

嗯,有点笨拙,并且使用了两个帮助器列(如您所愿(可以根据需要将它们组合)),然后使用sumifs(),如下所示:

enter image description here

列G和列H中的公式显示在数据下方,列K2中的公式在L2中...

答案 1 :(得分:0)

您没有显示想要如何显示结果。

在您的Table2中添加一列作为总数,您可以使用此数组公式

=SUM(IFERROR(INDEX(Table1,N(IF(1,MATCH(IF([@Prod]=[Prod],[Unit]),Table1[Unit],0))),2),0)*(([Prod]=[@Prod])*[Tonnes]))

要输入/确认数组公式,请在按下 enter 的同时按住 ctrl + shift 。如果正确执行此操作,Excel会在公式栏中显示的公式周围放置括号{...}

enter image description here

如果要为结果创建一个单独的表,则可以调整给定的公式。

例如,如果I9包含产品名称,则:

=SUM(IFERROR(INDEX(Table1,N(IF(1,MATCH(IF(I9=Table2[Prod],Table2[Unit]),Table1[Unit],0))),2),0)*((Table2[Prod]=I9)*Table2[Tonnes]))

enter image description here