【问题标题】:Vlookup an array of formulas in Excel在 Excel 中查找公式数组
【发布时间】:2015-10-28 06:09:30
【问题描述】:

我有一张有两列的表

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

我有另一个表,有一些 ID 和相应的权重:

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

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

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

我尝试在 Vlookup 和索引/匹配公式中将第二个表 ID 作为数组输入,但是虽然两者都接受一个范围作为查找值,但都只针对范围的第一个值执行而不是循环遍历整个数组。

我想理想情况下这个公式会

  1. 为 ID 设置一个 1 x 5 数组,
  2. 根据第一个表中的概率填充一个新的 1 x 5 数组
  3. 将新数组乘以现有的 1x5 数组作为权重
  4. 求和

[编辑] 所以对于上面的例子,最终的结果是 (50% x 1%)+(25% x 4%) + (15% x 1%) + (5% x 2%) + ( 5% x 2%) = 1.85%

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

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

【问题讨论】:

  • 我认为您应该向我们展示所需的输出。 “一张图抵千言”是 Stack Overflow 上的一句名言。
  • 当然。对于上面的示例,输出将是:(50% x 1%)+(25% x 4%) + (15% * 1%) + (5% x 2%) + (5% x 2%) = 1.85% 有帮助吗?
  • 没有。更新您的原始问题。

标签: arrays excel vlookup


【解决方案1】:

使用与 Trương Ngọc Đăng Khoa 给出的相同范围:

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

问候

【讨论】:

    【解决方案2】:

    你可以使用这个公式:

     {=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%  
    

    【讨论】:

    • 这只有在 A1:A4 中的条目保持严格的字母升序时才有效。
    【解决方案3】:

    很好的回应,谢谢大家!

    XOR LX,您的答案似乎在所有情况下都有效,这就是我正在寻找的(而且似乎比我最初想象的要简单得多)。我想我误解了 SUMIF 函数的工作方式。

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

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

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

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多