Vlookup Excel中的公式数组

时间:2015-10-28 06:09:30

标签: arrays excel vlookup

我有一个有两列的表

ID     Probability
A      1%
B      2%
C      3%
D      4%

我有另一张桌子,有一些ID和相应的权重:

ID   Weight
A    50%
D    25%
A    15%
B    5%
B    5%

我正在寻找的是一种方式,在单个公式中,使用来自第一个数据的数据为第二个表中的每个ID找到相应的概率,将它们各自的权重乘以第二个表,然后对结果求和。

我认识到解决它的一个简单方法是将代理列添加到第二个表并使用vlookup列出相应的概率并乘以权重,然后对结果求和,但我觉得必须有一个更优雅溶液

我尝试在Vlookup和Index / Match公式中将第二个表ID作为数组输入,但是虽然两者都接受范围作为查找值,但两者都只执行范围的第一个值而不是循环通过整个阵列。

我认为理想情况下公式

  1. 为ID设置1 x 5数组
  2. 根据第一张表格中的概率填充新的1 x 5数组
  3. 将新数组乘以现有的1x5数组,用于权重
  4. 总结结果
  5. [edit]因此对于上面的例子,最终结果将是(50%x 1%)+(25%x 4%)+(15%x 1%)+(5%x 2%)+( 5%x 2%)= 1.85%

    实际表格比我给出的示例大得多,因此单个vlookup的简单Sum()函数已经用完了。

    喜欢听到任何聪明的解决方案吗?

3 个答案:

答案 0 :(得分:0)

您可以使用以下公式:

 {=SUM(LOOKUP(D1:D5;A1:A4;B1:B4)*E1:E5)}

使用此表:

    A   B    C  D   E   
1   A   1%      A   50% 
2   B   2%      D   25% 
3   C   3%      A   15% 
4   D   4%      B   5%  
5               B   5%  

答案 1 :(得分:0)

使用与TrươngNgọcĐăngKhoa相同的范围:

=SUMPRODUCT(SUMIF(A1:A4,D1:D5,B1:B4),E1:E5)

此致

答案 2 :(得分:0)

很棒的回答,谢谢你们!

XOR LX,你的答案似乎适用于所有情况,这正是我所寻找的(而且看起来它比我原先想象的要简单得多)。我想我误解了SUMIF函数的工作方式。

如果有人感兴趣,我也找到了自己的(愚蠢复杂的)解决方案:

=SUM(IF(A1:A4=TRANSPOSE(D1:D5),1,0)*TRANSPOSE(E1:E5)*B1:B4)

这基本上可以通过将事物转换为4 x 5矩阵来实现。我认为我更喜欢XOR LX解决方案,因为它很简单。

感谢每个人的帮助!