excel如何查出一组数据里大于某个值的最小值
展开全部
标题有些绕,举个栗子一目了然。
比如有5个数字:(1,2,3,21,22),需要求出这5个数字里面大于10的最小值,那需要得到的值就是21,excel中求最大值或者最小值都很简单,max和min函数就解决了,但是求大于某个值的最小值,就会有些绕,目前我有两种方法能求出这个数,一是min函数的数组公式,二是countif+large(或者countif+small函数)
min函数的作用是求出一组数据中的最小值
这个例子主要用到了这个函数和求最大值的max函数的一个特性:当参数是数组或者引用的时候,会忽视逻辑值(min函数其实挺复杂的,只是我们的使用方法很简单),逻辑值就是TRUE和FALSE,if函数里面判断显示哪个就是根据逻辑值进行的。
插个题外话,以下内容需要注意(摘自百度百科):
用min数组公式来解决这个问题,目标就是构建出一个数组来,把小于规定数字的值全部设为false,那在这个数组中用min求值的话,因为参数是数组,会忽视false,就求出了大于这个值的最小值,详细公式为:
因为是数组公式,所以需要用ctrl+shift+enter才能求出来,我们一步步看下这个公式:
1、if中的判断语句,B2:B6>10,是用B2:B6中的每一个数字去和10比大小,比较运算的结果为逻辑值,B2:B6为一个区间,可以理解为一个数组,所以返回值也是一个数组:{FALSE;FALSE;FALSE;TRUE;TRUE}
2、if的判断条件是一个数组的时候,就用到了另一个概念:if会把数组中的每一个值进行真假判断,比如不是0的数值就是真,就读取if函数的第二个参数,为0就读取第三个参数详细说明见这篇文章: 如何理解if({1,0},X1,X2) ,这个例子里面,前三个值都是false,所以直接读取了最后的false,而第4和5个值为true,会读取B2:B6的第4和5个数字,分别就是32和21,所以内部if的最终运算结果为:{FALSE;FALSE;FALSE;32;21}
3、因为min函数的参数是一个数组,会忽略逻辑值,所以相当于在32和21中求最小值,最终就返回了21(其实前一步if函数的最后一个参数是true也可以,那最后的min函数就是在{TRUE;TRUE;TRUE;32;21}这个数组中求最小值,其实结果也一样,用false只是为了不混淆,用true可以,但是不能用1这种数字,因为这样最后生成的数组就包含数字了,可能会引起错误)
第二种方法比第一种简单的多,理解了思路就很清晰了:
求大于某个值的最小值,那就是两步:求出这组数据中小于这个数字的有n个,然后返回这组数据中第n-1大的数,或者求大于这个数字的有m个,返回这组数据第m大的数
countif函数作用是求满足条件的单元格数量,large是求一组数据中第几大的数
比如还是:1,2,3,32,21这组数,小于10的数字有3个,而大于10的最小值就是这组数据里面第2大的数,看详细公式:
以上两种方法等价,只是别被“第几大”这个概念绕晕了
large的对应函数是small,求一组数据中第几小的数,和上面的公式大同小异,就不细说了。
比如有5个数字:(1,2,3,21,22),需要求出这5个数字里面大于10的最小值,那需要得到的值就是21,excel中求最大值或者最小值都很简单,max和min函数就解决了,但是求大于某个值的最小值,就会有些绕,目前我有两种方法能求出这个数,一是min函数的数组公式,二是countif+large(或者countif+small函数)
min函数的作用是求出一组数据中的最小值
这个例子主要用到了这个函数和求最大值的max函数的一个特性:当参数是数组或者引用的时候,会忽视逻辑值(min函数其实挺复杂的,只是我们的使用方法很简单),逻辑值就是TRUE和FALSE,if函数里面判断显示哪个就是根据逻辑值进行的。
插个题外话,以下内容需要注意(摘自百度百科):
用min数组公式来解决这个问题,目标就是构建出一个数组来,把小于规定数字的值全部设为false,那在这个数组中用min求值的话,因为参数是数组,会忽视false,就求出了大于这个值的最小值,详细公式为:
因为是数组公式,所以需要用ctrl+shift+enter才能求出来,我们一步步看下这个公式:
1、if中的判断语句,B2:B6>10,是用B2:B6中的每一个数字去和10比大小,比较运算的结果为逻辑值,B2:B6为一个区间,可以理解为一个数组,所以返回值也是一个数组:{FALSE;FALSE;FALSE;TRUE;TRUE}
2、if的判断条件是一个数组的时候,就用到了另一个概念:if会把数组中的每一个值进行真假判断,比如不是0的数值就是真,就读取if函数的第二个参数,为0就读取第三个参数详细说明见这篇文章: 如何理解if({1,0},X1,X2) ,这个例子里面,前三个值都是false,所以直接读取了最后的false,而第4和5个值为true,会读取B2:B6的第4和5个数字,分别就是32和21,所以内部if的最终运算结果为:{FALSE;FALSE;FALSE;32;21}
3、因为min函数的参数是一个数组,会忽略逻辑值,所以相当于在32和21中求最小值,最终就返回了21(其实前一步if函数的最后一个参数是true也可以,那最后的min函数就是在{TRUE;TRUE;TRUE;32;21}这个数组中求最小值,其实结果也一样,用false只是为了不混淆,用true可以,但是不能用1这种数字,因为这样最后生成的数组就包含数字了,可能会引起错误)
第二种方法比第一种简单的多,理解了思路就很清晰了:
求大于某个值的最小值,那就是两步:求出这组数据中小于这个数字的有n个,然后返回这组数据中第n-1大的数,或者求大于这个数字的有m个,返回这组数据第m大的数
countif函数作用是求满足条件的单元格数量,large是求一组数据中第几大的数
比如还是:1,2,3,32,21这组数,小于10的数字有3个,而大于10的最小值就是这组数据里面第2大的数,看详细公式:
以上两种方法等价,只是别被“第几大”这个概念绕晕了
large的对应函数是small,求一组数据中第几小的数,和上面的公式大同小异,就不细说了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询