EXCEL 有条件下的求最大值/最小值

最大值、最小值直接用MAX(),MIN()就可以了,但如果在计算的时候还有前置条件,需要怎么做,比如求 相同颜色产品的销售额最多的产品

求最大值:

(1)单条件

如果只有一个条件,例如需要求同一类别下的最大的数量,

可以参照以下公式即可:

  • =MAX(数字值区域*条件1)
  • =MAX(IF(条件区域=条件1,数字值区域)

现在需要找到每一个类别下的最大值,输入公式=MAX(($A 2 : 2: 2:A 8 = A 2 ) ∗ ( 8=A2)*( 8=A2)∗(C 2 : 2: 2:C 8 ) ) 或 者 = M A X ( I F ( 8))或者=MAX(IF( 8))或者=MAX(IF(A 2 : 2: 2:A 8 = A 2 , 8=A2, 8=A2,C 2 : 2: 2:C$8)),因为里面涉及到数组的计算,所以要让公式生效,必须三键同时按下:Ctrl+Shift+Enter。结果如下图 所示:

注意这里的相对引用和绝对引用,如果条件是在固定的单元格需要使用绝对引用(加上$符)

(2)多条件

如果是多条件的求最大值呢?可以参照以下公式:

  • =MAX(数字值区域条件1条件2…)
  • =MAX(IF((条件区域1=条件1)*(条件区域2=条件2)…,数字值区域)

如图所示,如果要求每个城市,每个类别中的最大值,需要在目标单元格内输入公式:=MAX(($A 2 : 2: 2:A 8 = A 2 ) ∗ ( 8=A2)( 8=A2)∗(B 2 : 2: 2:B 8 = B 2 ) ∗ ( 8=B2)( 8=B2)∗(C 2 : 2: 2:C 8 ) ) 或 者 = M A X ( I F ( ( 8))或者=MAX(IF(( 8))或者=MAX(IF((A 2 : 2: 2:A 8 = A 2 ) ∗ ( 8=A2)*( 8=A2)∗(B 2 : 2: 2:B 8 = B 2 ) , 8=B2), 8=B2),C 2 : 2: 2:C$8)),并且三键同时按下让公式生效。

求最小值:

(1)单条件

如果只有一个条件,例如需要求同一类别下的最大的数量,

可以参照以下公式即可:

  • =MIN(IF(条件区域=条件1,数字值区域)

现在需要找到每一个类别下的最小值,输入公式=MIN(IF($A 2 : 2: 2:A 8 = A 2 , 8=A2, 8=A2,C 2 : 2: 2:C$8)),同时按下:Ctrl+Shift+Enter。结果如下图 所示:

(2)多条件

如果是多条件的求最小值呢?可以参照以下公式:

=MIN(IF((条件区域1=条件1)*(条件区域2=条件2)…,数字值区域)

如图所示,如果要求每个城市,每个类别中的最小值,需要在目标单元格内输入公式:=MIN(IF(($A 2 : 2: 2:A 8 = A 2 ) ∗ ( 8=A2)*( 8=A2)∗(B 2 : 2: 2:B 8 = B 2 ) , 8=B2), 8=B2),C 2 : 2: 2:C$8)),并且三键同时按下让公式生效。

一个有趣的点:

=MAX(数字值区域条件1条件2…)这类型的公式改为MIN后就不可用了,而=MAX(IF((条件区域1=条件1)*(条件区域2=条件2)…,数字值区域)直接改为MIN是可行的,那么原因是什么呢?

大家可以尝试将公式改为MIN(数字值区域条件1条件2…),会发现返回最小值全部都是0。

这是因为=MAX(数字值区域条件1条件2…)这一个公式相当于每一个数组中的元素都是和另外的一个数组中的元素相乘的,当不满足条件时返回false,而false乘以任何数字都会得到0,所以在判断最小的值的时候0是最小的值。

而=MAX(IF((条件区域1=条件1)(条件区域2=条件2)…,数字值区域)的IF((条件区域1=条件1)(条件区域2=条件2)…,数字值区域)函数保证了不满足条件时返回false(if函数没有第三参数时默认返回false),全部满足条件后返回数字值,min函数会忽略错误值,从而就可以返回真正的最小值了

参考https://blog.csdn.net/qq_42692386/article/details/105478363