Excel中,隨機生成一列隨機數是很常見的問題,比如說我們要隨機生成大於等於0小於1的隨機數,我們就可以在目標單元格輸入函數公式「=RAND()」。
由上圖可見,我們用RAND函數生成出來的隨機數都是小數的,可是在很多時候,我們希望生成的隨機數不要小數,而是正數。比如說我們要隨機生成大於1小於1000這個範圍之內的整數,我們就可以在目標單元格中輸入函數公式「=RANDBETWEEN(1,1000)」。
或者我們還可以用這個函數公式「=INT(RAND()*1000+1)」。
如果我們生成的隨機數範圍很小,我們想要的結果可能會出現重複值,這個有什麼更好的解決方法?
舉個例子:雙十一當天,某公司會有很多的抽獎環節,要從下圖中B列的50個姓名中隨機抽取5個,而且每個人的姓名只能出現一次,這時候我們就可以用輔助列+函數公式來實現。
具體操作步驟如下:
1、在C2單元格中輸入函數公式「=RAND()」,按回車鍵並將公式下拉填充至C51單元格。
由於RAND()函數可以生成6位數的隨機數,所以數值是基本上不可能存在重複的。
2、選中D2單元格,在編輯欄輸入函數公式「=RANK(C2,$C$2:C51)」,按回車鍵回車並將公式下拉填充至D51單元格。
RANK函數對C列生成的隨機數進行排序,因為隨機值不重複,所以可以得到1-50的數字。
3、選中F2單元格,在編輯欄中輸入函數公式「=INDEX($B$2:$B$51,D2)」,按回車鍵回車並將公式下拉填充至F6單元格。
因為D列的數字是隨機的,因此用INDEX函數取值的時候,拿到的值也是隨機的,也就是說50個人獲獎的概率都是相同的。
如果說一定要選排名在1-5的5個人,F2單元格的公式可以改為「=INDEX($B$2:$B$51,MATCH(ROW(1:1),$D$2:$D$51,))」。
4、動圖演示如下。
以上的操作有不懂的地方可以評論區留言或私信找我哦~
期待您的轉發與評論!