假设我有一张包含如下体育赛事结果的表格:
player A | player B | 2 | 1 | player C | player D
player C | player B | 1 | 2 | player E | player A
如表所示,任意一对玩家随机与另一对玩家进行比赛。
获得如下输出的最结构化和最合乎逻辑的方法是什么:
name | games | wins
player A | 2 | 2
player B | 2 | 1
player C | 2 | 0
etc.
目前我已经尝试使用VLOOKUP
,但是这些公式非常混乱,并且由于同一个球员在一场比赛里可以处于“位置 1”,而在另一场比赛里可以处于“位置 2”,因此也会出现问题……
很想听听大家对如何最好地做到这一点的意见。我对 Excel 中的这种“数据输出”功能还不太熟悉,因为我主要使用数学公式。
答案1
这是一个解决方案。假设第一个表中的列标题为:Player1、Player2、LScore、RScore、Player3、Player4。此示例的数据范围是 A2:F100。第二个表中预先列出了每个玩家,名字从 I2 开始并沿着列向下(I2="player A")。目标是填写游戏和获胜次数。
游戏计数很简单。对于玩家 A,J2 中的公式是:
=COUNTIF($A$2:$F$100,I2)
将公式复制到 J 列,供所有玩家使用。
计算获胜的最简单方法并不优雅,但确实有效。添加两列,以可数形式“编码”获胜者。G 列将为左队编码获胜。在 G2 中:
=(C2>D2)
将其复制到 G 列,用于整个数据范围。如果左侧得分高于右侧得分,则为 True,在计算中将处理为 1。否则,False 将处理为 0。H 列将是右侧球队的胜利。在 H2 中:
=1-G2
将其复制到 H 列下方。
胜利将是四个总和的组合,每个总和对应玩家所处的每个位置。因此 K2 将是:
=SUMIF($A$2:$A$100,I2,$G2:$G100)+SUMIF($B$2:$B$100,I2,$G2:$G100)+SUMIF($E$2:$E$100,I2,$H2:$H100)+SUMIF($F$2:$F$100,I2,$H2:$H100)
将其复制到 K 列下供所有玩家使用。
如果您希望它可扩展,请预先在 G 和 H 列中填充任意数量的条目,但为每个 G 和 H 条目添加 IF 测试,以便在没有数据时将值设为零。例如,G2 和 H2 将是:
=IF(ISBLANK(A2),0,C2>D2)
=IF(ISBLANK(A2),0,1-G2)