我想根据select使用两个不同的表的sumproduct
我正在研究一个统计模型,在这个模型中,我们使用sumproduct通过将一个表中的系数与另一个表中的系数相乘来生成预测值。 现在它正在手动完成,这是需要时间。 我想自动化,但我无法弄清楚这一点。
我们正在使用连接来识别用于查找的不同行。 这两个表的variables列数是相同的。 我需要在两个表中分别乘以每个variables单元,并将它们相加,因此是副产品。
这是我想要做的
美国手机产品A的预测模型1的销售额= [sumproduct]([美国手机用表1的年份variables],[美国手机产品的variables,表2的模型1])
我希望有一个人可以帮助我。
概念validation
您将需要更新引用来套用电子表格表格位置。
在单元格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))
这个过程被简化了,因为您可以使用第三个表中的信息构build前两个表中的每个表上的唯一ID标记。 如果您进入双数字预测模型,公式的MID()函数部分将需要修改。 中间函数中的16是指表3中预测模型销售标题名称中数字的字符位置。因此,您需要保持该标题格式完全相同,或者修改MID()中的数字位置,function。
更新1
公式的解释
在这个解决scheme中使用了以下公式:
- SUMPRODUCT
- 指数
- 比赛
- 中
- CONCATENATE
我将首先假设你已经理解了sumproduct(),因为在你遇到问题之前你已经使用了它。 关于sumproduct的一点要注意的是,它会导致数组像计算发生在它的括号内的部分。 在这种情况下,我们喂了两个相同大小的范围。 确定这些范围更是一个问题。
使用您的ID列作为查找行,我们使用match()函数来确定使用哪一行。 对于第一组variables,我们使用以下内容来确定要查找的行:
=MATCH($B21&$A21&$C21,$A$3:$A$12,0)
Match由括号内的三个参数组成:
MATCH(what to look for, where to look, type of match)
我们需要在表格中查找的是表3中的各个单元格的连接,以便在表1中构buildID。可以使用完整的公式来编写它:
=CONCATENATE($B21,$A21,$C21)
但使用&的短格式代替了:
=$B21&$A21&$C21
一旦我们find了需要查找的地方,我们需要从表1中查找并提供ID列的范围:
$A$3:$A$12
这现在留下了什么types的search执行的第三个也是最后一个论点。 完全匹配似乎是最适合执行的匹配,因此提供了0的值。 匹配的回报是提供的范围内的行。 它是相对于所提供的范围而不是电子表格中的实际行。 如果它不能匹配,它将返回一个错误,而不是一个行号。
现在我们知道了我们想要的行,我们可以用INDEX()函数来使用这些信息。 INDEX()函数由3个参数组成,第三个参数是可选的,取决于1D或2D范围是否被索引:
INDEX(Range to work with, 2D Row or 1D Position reference, 2D Column reference)
在我们正在处理第一个表格的情况下,处理的范围是您的variables列表:
$G$3:$I$12
这是一个2D范围。 因此,我们需要告诉INDEX()既要查找哪个行,又要查看哪些列。对于要查找的行,我们使用前面讨论的MATCH()函数。 因为我们想要所有的列而不是特定的列,所以我们使用0的值。如果Match返回一个错误,或者如果提供了一个大于所选行数或列数的数字,INDEX()将返回一个错误。 基于所讨论的信息,索引函数将如下所示:
=INDEX($G$3:$I$12,MATCH($B21&$A21&$C21,$A$3:$A$12,0),0)
你可以尝试在单元格中input上面的内容,但会给你一个错误。 如果在同一行中select三个相邻的单元格,并在input公式时使用CONTROL + SHIFT + ENTER ,则Excel将在公式周围添加{},它将是一个数组公式,并将显示三个正在使用的variables。
如上所述的相同过程可以用于确定表2的variables的第二范围。这里唯一的区别在于,预测模型号不是在它自己的列中,而是在由文本包围的标题行中。 因此,需要使用MID()函数进入标题行,绕过周围的文本并拉出模型编号,以便它可以用作CONCATENATION()的一部分,用于“要查找的内容”比赛():
=MID(E$20,16,1)
MID()函数再次使用三个参数:
MID(Text to look in, which character to start at, how many characters to pull)
所以在这种情况下,我们正在查看E20中的标题。 注意行号锁$,所以公式总是在第20行查看,无论它被复制多远。 然后到第十六个angular色。 在这种情况下,字符“1”,并拉1个字符。 如果头部刚好是1和2,则不需要MIDfunction,并且可以使用具有正确locking的单元。