我和朋友一起玩游戏,并创建了一个电子表格来记录结果。我正在尝试创建一个公式来计算一个人获胜的次数。
总而言之,表格的布局如下:
D6:D14 列 - 获胜轮数(目前为空)
从 G6:ZZ14 列开始 - 记录
例如
D G H I ...
--------------------
6 | 200 350 250 ...
7 | 340 400 300 ...
8 | 350 300 340 ...
9 | 450 250 500 ...
10 | 500 200 300 ...
11 | 200 150 400 ...
...
因此我尝试创建一个公式来计算每一次胜利,如下所示:
=SUM(SUM(IF(MAX($G$6:$G$11)=G6;1;0));SUM(IF(MAX($H$6:$H$11)=H6;1;0)))
如果值 (G6) 是该列的最高值 ```MAX($G$6:$G$11),则将值加 1,否则将加 0。我使用百分号将其复制到 D7:D14
它没用,因为我必须将每一列都写入公式(在示例中,它适用于 G 列和 H 列,但最后到 ZZ)。
谢谢你的帮助!
答案1
使用 SUBTOTAL 和 OFFSET 返回每列的最大值,然后使用 SUMPRODUCT 计算匹配数:
=SUMPRODUCT(--(SUBTOTAL(4,OFFSET($G$6,0,COLUMN($G$6:$I$11)-MIN(COLUMN($G$6:$I$11)),ROWS($G$6:$I$11),1))=G6:I6))
根据版本的不同,退出编辑模式时可能需要使用 Ctrl-Shift-Enter 而不是 Enter 来确认此公式。
如果要将范围预设为较大范围,则使用:
=SUMPRODUCT((SUBTOTAL(4,OFFSET($G$6,0,COLUMN($G$6:$ZZ$14)-MIN(COLUMN($G$6:$ZZ$14)),ROWS($G$6:$ZZ$14),1))=G6:ZZ6)*(SUBTOTAL(4,OFFSET($G$6,0,COLUMN($G$6:$ZZ$14)-MIN(COLUMN($G$6:$ZZ$14)),ROWS($G$6:$ZZ$14),1))<>0))
添加一个条件以忽略尚未有数字的列。
需要注意的是,此公式是不稳定的,只要 Excel 中的内容发生变化,它就会重新计算,而且范围太大会降低 Excel 的响应速度。