这是个条件求最大值的问题,你会怎么解呢?我相信很多小伙伴想到的是下面第1种解法。
第1种,max+if
在E2单元格输入公式=SMALL(A2:C6,COUNTIF(A2:C6,"<=100"))。
COUNTIF(A2:C6,"<=100")这部分用countif统计出A2:C6这个区域中小于等于100的单元格个数,结果为9。也就是小于等于100的有9个数字。
SMALL(A2:C6,COUNTIF(A2:C6,"<=100"))这部分用small从A2:C6这个区域中提取第9个最小值,刚好就是小于等于100的最大值。可以想一下这个原理。
SMALL(A2:C6,ROW(1:15))这部分用small从A2:C6这个区域中分别提取第1,2,3,···,一直到15个最小值,这样就给数字按升序排序了。结果为{-65.2;-32.5;-23;0;12.4;23.5;24.3;35.5;99.85;102;201;#NUM!;#NUM!;#NUM!;#NUM!}。
这里用ROW(1:15)是因为这个区域有5行3列,共15个单元格。当然你用更大的数字也没关系,比如ROW(1:99)也是可以的。
small返回的结果中会有错误值#NUM!,是因为这个区域中还包含文本,数字的个数只有11个。当提取第12个最小值时,找不到了,所以返回#NUM!
LOOKUP(100,SMALL(A2:C6,ROW(1:15)))这部分就是用lookup在排好序的数组中查找100,并返回对应的值99.85。
第4种,max+text
因为text返回的结果是文本,所以要通过减负运算,也就是--TEXT(A2:C6,"[<=100];;!0;!0")将文本型数字变为数值,最后用max求最大值。
如果A2:C6这个区域中的数字全是负数,那么这个公式的结果就不对了。
在E2单元格输入公式=AGGREGATE(14,6,A2:C6/(A2:C6<=100),1)。
https://pan.baidu.com/s/14jRQEM2UOyW_OBmhYEpjrA
联系客服