【问题标题】:Excel - combining SUMPRODUCTExcel - 结合 SUMPRODUCT
【发布时间】:2021-09-13 00:56:41
【问题描述】:

我有一张 Excel 表格,用于更新玩家评分。

Player Placing IniRating 1 2 3 4 FinRating
A 1 2.0 1.000 0.018 0.016 0.014 2.007
D 2 -2.0 54.598 0.982 0.856 0.775 -1.758
C 3 -0.1 8.166 0.147 0.128 0.116 -0.213
B 4 0.1 6.686 0.120 0.105 0.095 -0.036

单元格 D2 到 G5 中的公式是

=EXP(-$C2)/SUMPRODUCT(--($B$2:$B$5<=D$1)*(EXP(-$C$2:$C$5)))

H 列 (FinRating) 中的公式是

=((SUMPRODUCT(($D$1:$G$1>=B2)*$D2:$G2)-1)*0.15)+C2

我想将这些公式应用于多个工作表(事件)并增加玩家的数量(这将需要添加更多列),因此将它们组合在一个公式中是理想的。

理想情况下,该公式将进入FinRating 列,我可以调整它引用的范围,然后计算 FinRating。决赛桌应该是这样的

Player Placing IniRating FinRating
A 1 2.0 2.007
D 2 -2.0 -1.758
C 3 -0.1 -0.213
B 4 0.1 -0.036

我花了一些时间尝试组合这些公式,但没有成功,我使用 SUMPRODUCT 的经验有点轻。

关于如何实现这一点的任何想法?

【问题讨论】:

  • 我想在多个工作表和表格中应用这些公式 很抱歉问这个问题,但问题是什么?你得到了 2 个按预期工作的公式。从字面上看,将这些应用到几张纸上需要几秒钟(除非你有几张纸)。在 1 中恢复这两个公式有什么意义?无论如何,将它们组合使用 IF。类似IF header = Finrating then do formula2 else do formula 1
  • 我希望最好不要在上面标记 1-4 的列,而是让所有计算都发生在一个公式中。我想在更多玩家 (100+) 和许多事件 (100+) 中使用这个公式,所以在这么多事件中创建这些列会太多。

标签: excel excel-formula


【解决方案1】:

这是一个使用 3 个辅助列(可以隐藏)的解决方案。请注意,您无需为更多玩家添加更多帮助列 --- 3 列适用于所有情况。

D2(第一个助手列)中:

=EXP(-C2)

然后填写。

E2(第二个助手列)中:

=1/SUMIF($B$2:$B$5,"<="&B2,$D$2:$D$5)

然后填写。

F2(第三个助手列)中:

=SUMIF($B$2:$B$5,">="&B2,$E$2:$E$5)

然后填写。

最后在G2(最终评分):

=(D2*F2-1)*0.15+C2

然后填写。

我建议将数据放在表格中并使用表格公式。这样做的好处是,当最后一行更改时,您无需编辑公式(在您的示例中,最后一行都标有$5)。

公式几乎相同,只是列名取代了 A1 样式的引用。

在辅助列 1 中,我将其命名为 Calc1

=EXP(-[@IniRating])

在辅助列 2 中,我将其命名为 Calc2

=1/SUMIF([Placing],"<="&[@Placing],[Calc1])

在辅助列 3 中,我将其命名为 Calc3

=SUMIF([Placing],">="&[@Placing],[Calc2])

FinRating 列中:

=([@Calc1]*[@Calc3]-1)*0.15+[@IniRating]

【讨论】:

  • 这太好了,我可能可以完成这项工作。谢谢@xidgel
  • 进一步优化,将D2替换为{=1/(SUM(IF($B$2:$B$5&lt;=B2,EXP(-$C$2:$C$5))))},将E2替换为=(EXP(-C2)*(SUMIF($B$2:$B$5,"&gt;="&amp;B2,$D$2:$D$5))-1)*0.15+C2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多