如何计算 Excel 2010 中每列的最高值?

如何计算 Excel 2010 中每列的最高值?

我和朋友一起玩游戏,并创建了一个电子表格来记录结果。我正在尝试创建一个公式来计算一个人获胜的次数。

总而言之,表格的布局如下:

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 的响应速度。

相关内容