Table of contents
这篇文章展示了在Excel中根据你指定的一个或几个条件来获得最大值的几种不同方法。
在上一篇教程中,我们了解了MAX函数的常见用途,该函数旨在返回数据集中的最大数字。 然而,在某些情况下,你可能需要进一步钻研你的数据,根据某些标准找到最大值。 这可以通过使用一些不同的公式来实现,本文解释了所有可能的方法。
Excel MAX IF公式
直到最近,Microsoft Excel还没有一个内置的MAX IF函数来获取基于条件的最大值。 随着Excel 2019中MAXIFS的引入,我们可以用一种简单的方法来做条件性的最大值。
在Excel 2016和更早的版本中,你仍然需要创建自己的 阵列公式 通过将MAX函数与IF语句相结合。
{=MAX(IF( 标准_范围 标准 , 最大范围 ))}为了了解这个通用的MAX IF公式在真实数据上的作用,请看下面的例子。 假设你有一个表,里面有几个学生的跳远成绩。 这个表包括三轮比赛的数据,你正在寻找某个特定运动员的最佳成绩,比如雅各布。 学生的名字在A2:A10,距离在C2:C10,公式是这样的。
=MAX(IF(A2:A10="Jacob", C2:C10))
请记住,输入数组公式时必须同时按Ctrl + Shift + Enter键。 结果,它将自动被大括号包围,如下图所示(手动输入大括号是行不通的!)。
在现实生活中的工作表中,在某些单元格中输入标准是比较方便的,这样可以在不改变公式的情况下轻松改变条件。 因此,我们在F1中输入所需的名称,得到以下结果。
=max(if(a2:a10=f1, c2:c10))
这个公式如何运作
在IF函数的逻辑测试中,我们将名称列表(A2:A10)与目标名称(F1)进行比较。 这个操作的结果是一个TRUE和FALSE的数组,其中TRUE值代表与目标名称(Jacob)匹配的名称。
{false;false;false;true;true;false;false;false}。
对于 价值_如果_真实 参数,我们提供了长跳的结果(C2:C10),所以如果逻辑测试评估为TRUE,就会返回C列的相应数字。 值_如果是假的 参数被省略,意味着在不满足条件的情况下将只有一个FALSE值。
{false;false;false;5.48;5.42;5.57;false;false;false}。
这个数组被送入MAX函数,该函数返回忽略FALSE值的最大数字。
提示:要查看上面讨论的内部数组,请在工作表中选择公式的相应部分并按F9键。 要退出公式评估模式,按Esc键。
具有多个标准的MAX IF公式
当你需要根据一个以上的条件来寻找最大值时,你可以选择。
使用嵌套的IF语句来包括额外的标准。
{=MAX(IF( 标准_范围1 标准1 , IF( 标准_范围2 标准2 , 最大范围 )))}或者通过使用乘法运算处理多个标准。
{=MAX(IF(( 标准_范围1 标准1 ) * ( 标准_范围2 标准2 ), 最大范围 ))}假设你把男孩和女孩的结果放在一张表中,你希望在第三轮中找到女孩中最长的一跳。 要做到这一点,我们在G1中输入第一个标准(女性),在G2中输入第二个标准(3),并使用以下公式来计算最大值。
=max(if(b2:b16=g1, if(c2:c16=g2, d2:d16))
=MAX(IF((B2:B16=G1)*(C2:C16=G2), D2:D16))
由于这两个都是数组公式,请记得按Ctrl + Shift + Enter来正确完成。
如下面的截图所示,这两个公式产生的结果是一样的,所以使用哪一个是你的个人偏好问题。 对我来说,带有布尔逻辑的公式更容易阅读和构建--它允许你添加尽可能多的条件,而无需嵌套额外的IF函数。
这些公式是如何工作的
第一个公式使用两个嵌套的IF函数来评估两个标准。 在第一个IF语句的逻辑测试中,我们将性别列(B2:B16)中的值与G1中的标准("女性")进行比较。 结果是一个TRUE和FALSE值的数组,TRUE代表符合标准的数据。
{false;false;false;true;true;false;false;false;false;false;false;false;false;false;false;false;true;true}。
以类似的方式,第二个IF函数根据G2中的标准检查圆形列(C2:C16)中的值。
对于 value_if_true 在第二个IF语句中的参数,我们提供跳远结果(D2:D16),这样我们就可以得到前两个数组中相应位置的TRUE的项目(即性别为 "女 "且轮次为3的项目)。
{false; false; false; false; false; 4.63; false; false; false; false; false; false; 4.52}。
最后这个数组进入MAX函数,它返回最大的数字。
第二个公式在一个单一的逻辑测试中评估相同的条件,乘法运算的作用类似于AND运算符。
当TRUE和FALSE值被用于任何算术运算时,它们分别被转换为1和0。而且因为乘以0总是得到0,所以只有当所有条件都是TRUE时,得到的数组才有1。 这个数组在IF函数的逻辑测试中被评估,它返回与1(TRUE)元素对应的距离。
无阵列的最大IF
许多Excel用户,包括我在内,都对数组公式有偏见,并试图尽可能摆脱它们。 幸运的是,Microsoft Excel有几个函数可以原生处理数组,我们可以使用其中一个函数,即SUMPRODUCT,作为MAX的一种 "包装"。
无数组的通用MAX IF公式如下。
=sumproduct(max(( 标准_范围1 标准1 ) * ( 标准_范围2 标准2 ) * 最大范围 ))当然,如果需要,你可以添加更多的范围/标准对。
为了看到公式的作用,我们将使用前面例子中的数据。 目的是为了得到一名女运动员在第三轮中的最大跳跃。
=sumproduct(max((b2:b16=g1) * (c2:c16=g2) * (d2:d16)))))
这个公式与普通的回车键竞争,返回的结果与数组的MAX IF公式相同。
仔细观察上面的截图,你可以注意到,在前面的例子中,标有 "x "的无效跳转现在在第3、11和15行的数值为0,下一节将解释原因。
这个公式如何运作
与MAX IF公式一样,我们通过比较Gender(B2:B16)和Round(C2:C16)列中的每个值与单元格G1和G2中的标准来评估两个标准。 结果是两个TRUE和FALSE值的数组。 将数组的元素在相同位置相乘,TRUE和FALSE分别转换为1和0,其中1代表符合两个标准的项目。 第三个相乘的数组包含了跳远的结果(D2:D16)。 因为乘以0会得到0,所以只有在相应位置上有1(TRUE)的项目才会存活。
{0; 0; 0; 0; 0; 4.63; 0; 0; 0; 0; 0; 0; 0; 0; 4.52}
如果是这样的话 最大范围 包含任何文本值,乘法运算会返回#VALUE错误,因为这样整个公式就无法工作。
MAX函数从这里开始,返回满足指定条件的最大数字。 由单个元素{4.63}组成的数组进入SUMPRODUCT函数,它在一个单元格中输出最大数字。
注意:由于其特定的逻辑,该公式在使用时要注意以下几点。
- 你搜索最高值的范围必须只包含数字。 如果有任何文本值,会返回#VALUE!错误。
- 该公式不能评估负数数据集中的 "不等于零 "条件。 要找到忽略零的最大值,请使用MAX IF公式或MAXIFS函数。
Excel MAX IF公式与OR逻辑
要找到最大值,当 任何 满足指定的条件,使用已经熟悉的布尔逻辑的数组MAX IF公式,但要将条件相加而不是相乘。
{=MAX(IF(( 标准_范围1 标准1 ) + ( 标准_范围2 标准2 ), 最大范围 ))}或者,你可以使用以下非数组公式。
=sumproduct(max(() 标准_范围1 标准1 ) + ( 标准_范围2 标准2 )) * 最大范围 ))请注意,在Excel语言中,这个任务的表述是不同的:如果轮次是2或3,则返回最大值。
在B2:B10中列出轮次,C2:C10中列出结果,F1和H1中列出标准,公式如下。
=max(if((b2:b10=f1)+(b2:b10=h1), c2:c10))
按Ctrl + Shift + Enter组合键输入公式,你会得到这个结果。
同样条件下的最大值也可以通过使用这个非数组公式找到。
=sumproduct(max((b2:b10=f1) + (b2:b10=h1)) * c2:c10)
然而,在这种情况下,我们需要将C列中的所有 "x "值替换为零,因为SUMPRODUCT MAX只适用于数字数据。
这些公式是如何工作的
数组公式的工作方式与带AND逻辑的MAX IF完全相同,只是你通过使用加法运算而不是乘法来连接标准。 在数组公式中,加法的作用与OR运算相同。
将两个TRUE和FALSE数组相加(这是根据F1和H1中的标准检查B2:B10中的值的结果)产生一个1和0的数组,其中1代表任一条件为TRUE的项目,0代表两个条件为FALSE的项目。 结果,IF函数 "保留 "了C2:C10中的所有项目( value_if_true )的任何条件为 "真"(1);其余项目用 "假 "代替,因为 value_if_false 参数未被指定。
非数组公式的工作方式类似。 不同的是,你用跳远结果数组(C2:C10)中相应位置的元素乘以1和0数组的元素,而不是IF的逻辑测试。 这就使不符合任何条件的项目无效(在第一个数组中有0),并保留符合其中一个条件的项目(在第一个数组中有1)。阵列)。
MAXIFS--寻找有条件的最高值的简单方法
Excel 2019、2021和Excel 365的用户摆脱了驯服数组建立自己的MAX IF公式的麻烦。 这些版本的Excel提供了期待已久的MAXIFS函数,使寻找有条件的最大值变得轻而易举。
在MAXIFS的第一个参数中,你要输入寻找最大值的范围(在我们的例子中是D2:D16),在随后的参数中你最多可以输入126个范围/标准对。 例如。
=maxifs(d2:d16, b2:b16, g1, c2:c16, g2)
如下面的截图所示,这个简单的公式在处理包含数字和文本值的范围时没有问题。
关于此函数的详细信息,请参见Excel MAXIFS函数与公式实例。
这就是你如何在Excel中用条件找到最大值的方法。 感谢你的阅读,希望下周在我们的博客上见到你
供下载的实践工作手册
Excel MAX IF公式示例(.xlsx文件)。