Excel 我想根据选择将sumproduct与两个不同的表一起使用

Excel 我想根据选择将sumproduct与两个不同的表一起使用,excel,vlookup,Excel,Vlookup,我正在研究一个统计模型,在这个模型中,我们使用sumproduct通过将一个表中的系数乘以另一个表中的变量来生成预测值。现在,这是手动完成的,这需要时间。我想让它自动化,但我无法解决这个问题 我们使用concatenate来标识用于vlookup的不同行。两个表的变量列数相同。我需要将两个表中的每个变量单元格分别相乘,然后求和,从而得到sumproduct 这就是我想做的 美国手机产品A的预测模型1销售额=sumproduct([美国手机的表1中的年度变量],[美国手机产品A模型1的变量来自表2

我正在研究一个统计模型,在这个模型中,我们使用sumproduct通过将一个表中的系数乘以另一个表中的变量来生成预测值。现在,这是手动完成的,这需要时间。我想让它自动化,但我无法解决这个问题

我们使用concatenate来标识用于vlookup的不同行。两个表的变量列数相同。我需要将两个表中的每个变量单元格分别相乘,然后求和,从而得到sumproduct

这就是我想做的

美国手机产品A的预测模型1销售额=sumproduct([美国手机的表1中的年度变量],[美国手机产品A模型1的变量来自表2])

我希望有人能帮助我

概念验证

您需要更新引用以适应电子表格的位置

在单元格E21中,使用以下命令,并根据需要右下复制:

=SUMPRODUCT(INDEX($G$3:$I$12,MATCH($B21&$A21&$C21,$A$3:$A$12,0),0),INDEX($F$15:$H$18,MATCH($A21&$C21&$D21&MID(E$20,16,1),$A$15:$A$18,0),0))
这一过程得到了简化,因为前两个表中的每个表都有一个唯一的ID标记,可以根据第三个表中的信息构建。如果使用两位数预测模型,则需要修改公式的MID()函数部分。mid函数中的16表示表3中预测模型销售标题名称中数字的字符位置。因此,您需要保持标题格式完全相同,或者在MID()函数中修改数字的位置

更新1 公式说明

此解决方案中使用了以下公式:

我首先假设您已经理解了sumproduct(),因为在遇到问题之前您已经在使用它了。关于sumproduct需要注意的一点是,它会导致在括号内的部分上进行类似数组的计算。在这种情况下,我们给它喂了两个大小相等的范围。困难的部分更多的是确定这些幅度的问题

使用ID列作为查找行,我们使用match()函数确定要使用的行。对于第一组变量,我们使用以下方法确定要查找的行:

=MATCH($B21&$A21&$C21,$A$3:$A$12,0)
Match由括号内的三个参数组成:

MATCH(what to look for, where to look, type of match)
我们需要在表中查找的是表3中各种单元格的串联,以构建表1中的ID。它可以用完整的公式写成:

=CONCATENATE($B21,$A21,$C21)
但使用了缩写形式&代替:

=$B21&$A21&$C21
一旦找到要查找的内容,我们就需要查找位置的范围,并提供了表1中的ID列:

$A$3:$A$12
现在剩下第三个也是最后一个要执行哪种类型的搜索的参数。精确匹配似乎是最适合执行的匹配,因此提供了值0。匹配返回的是所提供范围内的行。它与提供的范围相关,而不是电子表格中的实际行。如果无法匹配,则将返回错误而不是行号

现在我们知道了需要哪一行,我们可以在INDEX()函数中使用这些信息。INDEX()函数由3个参数组成,第三个参数是可选的,具体取决于是否为一维或二维范围编制索引:

INDEX(Range to work with, 2D Row or 1D Position reference, 2D Column reference)
在我们处理第一个表的情况下,要处理的范围是变量列表:

$G$3:$I$12
这是一个二维范围。因此,我们需要告诉INDEX()要查找的行以及要查找的列。对于要查找的行,我们使用了前面讨论的MATCH()函数。因为我们需要所有的列,而不仅仅是一个特定的列,所以我们使用0的值。如果Match返回错误,或者如果提供的数字大于所选行数或列数,INDEX()将返回错误。根据讨论的信息,索引函数如下所示:

=INDEX($G$3:$I$12,MATCH($B21&$A21&$C21,$A$3:$A$12,0),0)
您可以尝试在单元格中输入上述内容,但它会给您一个错误。如果在同一行中选择三个相邻单元格,并在输入公式时使用CONTROL+SHIFT+ENTER,Excel将在公式周围添加{},它将是一个数组公式,并应显示正在使用的三个变量

上述相同过程可用于确定表2中变量的第二个范围。这里唯一的区别是预测模型编号不在其自己的列中,而是在标题行中,该行由文本包围。因此,需要使用MID()函数进入标题行,绕过周围的文本并拉出型号,以便将其用作MATCH()中用于“查找内容”的连接()的一部分:

MID()函数使用三个参数再次工作:

MID(Text to look in, which character to start at, how many characters to pull)
因此,在本例中,我们将查看E20中的标题。请注意行号上的锁$,以便无论复制到多远,公式始终在第20行中查找。然后是第16个字符。在本例中,输入字符“1”并拖动1个字符。如果标题仅为1和2,则不需要MID功能,并且可以使用单元格(带有适当的锁)。

概念验证

您需要更新引用以适应电子表格的位置

在单元格E21中,使用以下命令,并根据需要右下复制:

=SUMPRODUCT(INDEX($G$3:$I$12,MATCH($B21&$A21&$C21,$A$3:$A$12,0),0),INDEX($F$15:$H$18,MATCH($A21&$C21&$D21&MID(E$20,16,1),$A$15:$A$18,0),0))
这一过程得到了简化,因为前两个表中的每个表都有一个唯一的ID标记,可以根据第三个表中的信息构建。如果使用两位数预测模型,则需要修改公式的MID()函数部分。mid函数中的16表示表3中预测模型销售标题名称中数字的字符位置。因此,您需要保持标题格式完全相同,或者在MID()函数中修改数字的位置

更新1 解释