eccel多条件求最大和值,这几种方法由简入繁,却都挺管用的!

咱是职场文化人 2024-12-01 20:22:44

小伙伴们好,今天和大家分享一道关于统计求和的问题。这道题目的思路具有一定的代表性,可以供今后类似题目借鉴。

原题是这样子的:

求每科成绩都在80以上的最高总分。怎么样,朋友们都有看些好方法?

01 加个辅助列

加一个辅助列,并求和总成绩。问题是不是就变得很简单了?

在单元格E2中输入下列公式,三键回车即可。

=MAX((A2:A14>80)*(B2:B14>80)*(C2:C14>80)*D2:D14)

这个公式很简单,满足“条件*条件*条件*数值区域“这样一个结构。不必细说了。

02 不想用辅助列,那就用SUBTOTAL函数

当不允许我们添加辅助列时,该怎么办呢?

在单元格E2中输入下列公式,三键回车即可。

=MAX((A2:A14>80)*(B2:B14>80)*(C2:C14>80)*SUBTOTAL(9,OFFSET($A$1:$C$1,ROW(A1:A13),0)))

和上一个公式相比,仅仅是用SUBSTOTAL函数替代了单元格区域D2:D14。下面我们就着重讲一讲这个SUBTOTAL函数。

思路:

OFFSET($A$1:$C$1,ROW(A1:A13),0)部分,以$A$1:$C$1为基点,依次分别向下移动1、2、…、13行,形成一个三维内存数组外侧嵌套SUBSTOTAL函数对其就行求和。由于内存数组是三维的,所以不能使用SUM函数直接来求和,而SUBTOTAL函数是支持三维直接求和的最后一步就回到了上面讲的,MAX函数提取最大值

03 不想写太多条件,,那也用SUBTOTAL函数

如果你觉得写三组条件太繁琐了,那可以试试下面这个方法。

在单元格E2中输入下列公式,三键回车即可。

=MAX((SUBTOTAL(5,OFFSET(A1:C1,ROW(A2:A14)-1,0))>80)*SUBTOTAL(9,OFFSET(A1:C1,ROW(A2:A14)-1,0)))

思路:

这里用到了两次SUBSTOTAL函数。函数的使用方法和上面介绍的是一样的。第一个返回最小值并和80作比较;第二个则计算合计,最后求和最大值。

04 公式太长?好,上MMULT函数!

最后这个使用了MMULT函数,公式整体上也更加简短。

在单元格E2中输入下列公式,三键回车即可。

=MAX((MMULT((A2:C14>80)*1,ROW(1:3)^0)=3)*MMULT(A2:C14,ROW(1:3)^0))

思路:

这个公式也是连续使用两次MMULT函数,第一个求出每科成绩都大于80的部分,第二个求出成绩汇总,最后MAX函数返回最大值。

朋友们如果对MMULT这个函数还有问题,可以后台私信我哦!

好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-

0 阅读:0