本次的練習(xí)是:使用公式生成位于兩個(gè)值之間且沒有重復(fù)值的隨機(jī)數(shù)。如下圖1所示,生成在1至10之間且沒有重復(fù)值的隨機(jī)數(shù)。
圖1
先不看答案,自已動(dòng)手試一試。
公式
在單元格B3中的數(shù)組公式:
=SMALL(IF(COUNTIF(B$2:B2,ROW($1:$10))<>1,ROW($1:$10)),1+INT(RAND()*(10-ROW()+ROW(B$3))))
拖至單元格B12。
公式解析
下圖2展示了公式中SMALL函數(shù)的第一個(gè)參數(shù)IF(COUNTIF())部分的運(yùn)算過程。
圖2單元格區(qū)域E4:E13中呈現(xiàn)的是ROW($1:$10)的結(jié)果,即數(shù)字1到10。
COUNTIF函數(shù)統(tǒng)計(jì)列E中的數(shù)字在B3:B7中出現(xiàn)的次數(shù)并在F4:F13中放置統(tǒng)計(jì)的結(jié)果。
然后將列F中的結(jié)果與1比較,看是否等于1,在G4:G13中放置比較后的結(jié)果。
如果列G中的值是TRUE,表明列E中相應(yīng)單元格的數(shù)值還沒有被使用,將其放置到列H中,否則寫入FALSE。列H中的結(jié)果即為還沒有被使用的數(shù)字。
作為SMALL函數(shù)第二個(gè)參數(shù)的公式:
1+INT(RAND()*(10-ROW()+ROW(B$3)))
根據(jù)公式單元格所在的行,生成一個(gè)數(shù)字,該數(shù)字小于等于還沒有被使用過的數(shù)字?jǐn)?shù)。例如,如果公式所在的單元格為B9,那么將生成1至4之間的一個(gè)整數(shù)作為SMALL函數(shù)的參數(shù),提取剩下沒有被使用的數(shù)字中的數(shù)。
小結(jié)
SMALL函數(shù)忽略參數(shù)中的任何非數(shù)字的數(shù)據(jù)。
公式創(chuàng)建了一組沒有使用過的數(shù)字,然后選取這些數(shù)字中的一個(gè)作為隨機(jī)數(shù)。
將ROW函數(shù)中的參數(shù)進(jìn)行改變,生成所需區(qū)間的隨機(jī)數(shù)。
下期預(yù)告:
Excel公式練習(xí)26:比較兩列的值并提取不相同的數(shù)據(jù)
如下圖所示,要提取列C中西區(qū)超市有而列A中東區(qū)超市沒有的水果,如何編寫公式呢?
本文屬原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。
歡迎在下面留言,完善本文內(nèi)容,讓更多的人學(xué)到更完美的知識(shí)。
聯(lián)系客服