標題有些繞旨椒,舉個栗子一目了然晓褪。
比如有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函數有兩種使用方法:直接把數值當做參數,以及引用一個區(qū)域/數組
參數可以是數字嗤形、空白單元格精偿、邏輯值或表示數值的文字串。如果參數中有錯誤值或無法轉換成數值的文字時赋兵,將引起錯誤笔咽。
如果參數是數組或引用,則函數 MIN 僅使用其中的數字霹期,數組或引用中的空白單元格叶组,邏輯值、文字或錯誤值將忽略历造。如果邏輯值和文字串不能忽略甩十,請使用 MINA 函數 。
如果參數中不含數字吭产,則函數 MIN 返回 0侣监。
說人話就是,以下兩個公式的計算結果不相等:
上面兩個公式臣淤,都是求5個數的最小值橄霉,區(qū)別是前一個是直接引用,后一個是把這個5個數字直接當做了min的參數邑蒋。
因為從上面的描述可以知道姓蜂,當min的參數是引用的時候,true和false這種邏輯值是被直接忽視的寺董,所以返回結果是1覆糟,而當做參數的時候,true相當于是1遮咖,false相當于是0滩字,所以返回了0.
sum、average、max等這些函數也有這種特性麦箍,大家在用的時候要小心漓藕。
用min數組公式來解決這個問題,目標就是構建出一個數組來挟裂,把小于規(guī)定數字的值全部設為false享钞,那在這個數組中用min求值的話,因為參數是數組诀蓉,會忽視false栗竖,就求出了大于這個值的最小值,詳細公式為:
因為是數組公式渠啤,所以需要用ctrl+shift+enter才能求出來狐肢,我們一步步看下這個公式:
1、if中的判斷語句沥曹,B2:B6>10份名,是用B2:B6中的每一個數字去和10比大小,比較運算的結果為邏輯值妓美,B2:B6為一個區(qū)間僵腺,可以理解為一個數組,所以返回值也是一個數組:{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這種數字陆盘,因為這樣最后生成的數組就包含數字了普筹,可能會引起錯誤)
二、rank+large(rank+small)函數
第二種方法比第一種簡單的多隘马,理解了思路就很清晰了:
求大于某個值的最小值太防,那就是兩步:求出這組數據中小于這個數字的有n個,然后返回這組數據中第n-1大的數酸员,或者求大于這個數字的有m個蜒车,返回這組數據第m大的數
countif函數作用是求滿足條件的單元格數量,large是求一組數據中第幾大的數
比如還是:1,2,3,32,21這組數幔嗦,小于10的數字有3個酿愧,而大于10的最小值就是這組數據里面第2大的數,看詳細公式:
以上兩種方法等價崭添,只是別被“第幾大”這個概念繞暈了
large的對應函數是small寓娩,求一組數據中第幾小的數,和上面的公式大同小異呼渣,就不細說了棘伴。