
MIN函数和MAX函数用法非常简单,但是有时候能帮我们解决一些复杂的问题,特别是在解决上限和下限问题方面,真的是如虎添翼。

MIN 函数可以求出一组数中的最小值,如MIN(5,9,3,6)=3。
MAX 函数可以求出一组数中的最大值,如MAX(5,9,3,6)=9
MIN函数和MAX函数的参数可以是单元格引用,如:MAX(A1:A4)=9, MIN(A1:A4)=3。它们会自动忽略空白单元格,注意空白单元格并不是0,如果要把0作为计算对象,必须在单元格内输入0。
如果参数为错误值,将产生错误。如:MAX(#N/A,3,5,9)=#N/A。
MIN函数和MAX函数会自动忽略逻辑值,如果想将逻辑值也参与运算,需要用MAXA和MINA函数,此时TRUE相当于1,FASE相当于0。如:MAXA(TRUE,FALSE)=1,MINA(TRUE,FALSE)=0。

如上图所示案例,我们要在D列求出每个延迟缴费的人需要支付的滞纳金。计算滞纳金的思路为:滞纳金=应缴费金额×5%×滞纳天数。

此案例最关键的地方就是求出滞纳天数,滞纳天数=当天日期-应缴费日期。如果结果为0,说明应缴费日期刚好是今天,如果结果为正数,则表示延迟缴费,如果结果为负数,则表示还未到缴费期。此时我们用得出的结果和0比较取出最小值即可将负数变为0。
我们还可以采用另外一种思路计算滞纳天数。先将今天的日期和应缴费日期进行比较,取最小值,然后再用今天的日期减去上面比较的结果,就可以得到滞纳天数。但这种方法过于复杂和迂回,不建议使用。
Today()函数可以动态获取当天的日期。具体如何求出滞纳金,请参见上图所示公式。

再来看上图所示案例,要在C列求出每个员工的迟到时间。

假设上班时间为8:30,那么迟到时间=打卡时间-8:30。如果结果为正数,则表示迟到,如果结果为负数或0,则表示未迟到。但是我们需要将结果为负数的值转换成0,所以可以用MAX函数帮忙。如上图所示方法1。
另外我们还可以用迂回一点的方式,先将打卡时间和8:30进行比较求出最大值,再减去8:30即可得出迟到时间,思路不同,但最终的结果都是一样的,如上图所示方法2。
Time(时,分,秒)可以帮助构造任意时间。

最后一个是MIN和MAX搭配结合使用的案例。我们要求出每个员工实际打车报销金额。最多报销80元,最少报销20元。这就是上限和下限的典型问题。

我们先拿员工报销的金额与下限金额(20元)进行比较求出最大值,再将比较结果同上限金额(80元)比较求最小值即可。具体公式请参见上图。