c++ 编写函数返回两个值最小值_在excel中,如何查出一组数据里大于某个值的最小值...

本文介绍了如何在Excel中使用MIN函数的数组公式和COUNTIF+LARGE组合来找出一组数据中大于特定值的最小数字。通过IF函数构建逻辑数组,MIN函数会忽略逻辑值,从而求得目标值。另外,通过COUNTIF计算大于特定值的个数,结合LARGE函数也能达到同样效果。这两种方法为处理复杂数据筛选提供了实用技巧。
摘要由CSDN通过智能技术生成

标题有些绕,举个栗子一目了然。

比如有5个数字:(1,2,3,21,22),需要求出这5个数字里面大于10的最小值,那需要得到的值就是21,excel中求最大值或者最小值都很简单,max和min函数就解决了,但是求大于某个值的最小值,就会有些绕,目前我有两种方法能求出这个数,一是min函数的数组公式,二是countif+large(或者countif+small函数)

一、min函数数组公式

min函数的作用是求出一组数据中的最小值

这个例子主要用到了这个函数和求最大值的max函数的一个特性:当参数是数组或者引用的时候,会忽视逻辑值(min函数其实挺复杂的,只是我们的使用方法很简单),逻辑值就是TRUE和FALSE,if函数里面判断显示哪个就是根据逻辑值进行的。

插个题外话,以下内容需要注意(摘自百度百科):

min函数有两种使用方法:直接把数值当做参数,以及引用一个区域/数组
参数可以是数字、空白单元格、逻辑值或表示数值的文字串。如果参数中有错误值或无法转换成数值的文字时,将引起错误。
如果参数是数组或引用,则函数 MIN 仅使用其中的数字,数组或引用中的空白单元格,逻辑值、文字或错误值将忽略。如果逻辑值和文字串不能忽略,请使用 MINA 函数 。
如果参数中不含数字,则函数 MIN 返回 0。
说人话就是,以下两个公式的计算结果不相等:

dbbc1a3ddffccc5ce8b6bbbf913d7ea5.png

1a326b848b9837bc034741d6c01edd84.png
上面两个公式,都是求5个数的最小值,区别是前一个是直接引用,后一个是把这个5个数字直接当做了min的参数。
因为从上面的描述可以知道,当min的参数是引用的时候,true和false这种逻辑值是被直接忽视的,所以返回结果是1,而当做参数的时候,true相当于是1,false相当于是0,所以返回了0.
sum、average、max等这些函数也有这种特性,大家在用的时候要小心。

用min数组公式来解决这个问题,目标就是构建出一个数组来,把小于规定数字的值全部设为false,那在这个数组中用min求值的话,因为参数是数组,会忽视false,就求出了大于这个值的最小值,详细公式为:

因为是数组公式,所以需要用ctrl+shift+enter才能求出来,我们一步步看下这个公式:

8f76fdab48700fc3daee1d162a12e41a.png

1、if中的判断语句,B2:B6>10,是用B2:B6中的每一个数字去和10比大小,比较运算的结果为逻辑值,B2:B6为一个区间,可以理解为一个数组,所以返回值也是一个数组:{FALSE;FALSE;FALSE;TRUE;TRUE}

0123e09a5f769115eae19aafa5ac7c8b.png

2、if的判断条件是一个数组的时候,就用到了另一个概念:if会把数组中的每一个值进行真假判断,比如不是0的数值就是真,就读取if函数的第二个参数,为0就读取第三个参数,这个例子里面,前三个值都是false,所以直接读取了最后的false,而第4和5个值为true,会读取B2:B6的第4和5个数字,分别就是32和21,所以内部if的最终运算结果为:{FALSE;FALSE;FALSE;32;21}

875e9014d0fd7c46562f2aebaedd470a.png

3、因为min函数的参数是一个数组,会忽略逻辑值,所以相当于在32和21中求最小值,最终就返回了21(其实前一步if函数的最后一个参数是true也可以,那最后的min函数就是在{TRUE;TRUE;TRUE;32;21}这个数组中求最小值,其实结果也一样,用false只是为了不混淆,用true可以,但是不能用1这种数字,因为这样最后生成的数组就包含数字了,可能会引起错误)

二、rank+large(rank+small)函数

第二种方法比第一种简单的多,理解了思路就很清晰了:

求大于某个值的最小值,那就是两步:求出这组数据中小于这个数字的有n个,然后返回这组数据中第n-1大的数,或者求大于这个数字的有m个,返回这组数据第m大的数

countif函数作用是求满足条件的单元格数量,large是求一组数据中第几大的数

比如还是:1,2,3,32,21这组数,小于10的数字有3个,而大于10的最小值就是这组数据里面第2大的数,看详细公式:

06ee88bfcf5fdb73717d438a0082899d.png

a7af5d86945289ea8bfed9f336e1fc9a.png

以上两种方法等价,只是别被“第几大”这个概念绕晕了

large的对应函数是small,求一组数据中第几小的数,和上面的公式大同小异,就不细说了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值