Excel MAX IF公式寻找有条件的最大值

  • Share This
Michael Brown

这篇文章展示了在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文件)。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.