無直接的公式,但可以用間接方法生成 1、A1-A100中用公式生成100個隨機(jī)數(shù)=RAND() 2、B1輸入=RANK(A1,$A$1:$A$100),一直拉到A100 B1:B100就是100個不重復(fù)的隨機(jī)數(shù)字
Excel中如何得到不重復(fù)的隨機(jī)數(shù)?情況下面操作方法。
材料/工具
Excel
方法
啟動Excel
如,要求,1-50個數(shù)字隨機(jī)不重復(fù)分布在50個單元格里 1、在A1單元格輸入“=IF(ROW()=1,INT(RAND()*50+1),LARGE(IF(COUNTIF(INDIRECT("A1:A"&ROW()-1),ROW($1:$50)),,ROW($1:$50)),INT((51-ROW())*RAND()+1)))”,不要直接回車或點(diǎn)前邊的勾確認(rèn),而
按Alt + F11啟動VBA
一、工具 筆記本電腦,office excel軟件 二、方法(以要求1-50個數(shù)字隨機(jī)不重復(fù)分布在50個單元格中為例) 1、在A1單元格輸入“=IF(ROW()=1,INT(RAND()*50+1),LARGE(IF(COUNTIF(INDIRECT("A1:A"&ROW()-1),ROW($1:$50)),,ROW($1:$50)),INT((51-ROW(
選擇要生成隨機(jī)數(shù)的工作表。
在A2中輸入=rand() 在B2中輸入=rank(A2,A:A,0) 同時向下復(fù)制,你要多長的隨機(jī)數(shù),就向下復(fù)制多少行即可。 如果你要的隨機(jī)數(shù)起始值不為1,比如要100到200內(nèi)的隨機(jī)數(shù),就把第二個公式加個基數(shù)就行,如: =rank(A2,A:A,0)+99 然后向下復(fù)制100行就是了
輸入以下代碼:
先在A1:A8中輸入相同的公式: =INT(RAND()*15+1) 再在B1中輸入下面公式,并拖動復(fù)制到B8格,如果A列中有重復(fù),B列對應(yīng)的格會顯示大于1的數(shù)字,等于1為不重復(fù)。 =COUNTIF($A$1:$A$8,A1) 然后按鍵盤上方的F9功能鍵,直到B列格中都是1,就行了。
Sub m()
如果用公式的話,只需要,在1到481之間生成一個隨機(jī)數(shù),后面的數(shù)依次加1 但是公式,可能控制不了,重復(fù), 如果不想重復(fù)只能用VBA了。
Range("A:A").ClearContents' 這里是A列,根據(jù)需要修改
如果不想增加輔助行的話,那就excel的迭代計(jì)算。 excel公式是不允許引用公式自身所在單元格的,但在迭代計(jì)算時就得循環(huán)引用以達(dá)到迭代的目的。 要迭代計(jì)算03版在工具>選項(xiàng)>重新計(jì)算中選上“迭代計(jì)算”,并選擇合適的次數(shù)與誤差,次數(shù)過大會造成“
For i = 1 To 10' 這里是10個數(shù)字,根據(jù)需要修改
方法一:公式法 1、我們以生成1-10范圍內(nèi)的隨機(jī)數(shù)字為例,講述方法。 首先,在A2單元格中輸入公式:=SMALL(IF(COUNTIF($A$1:A1,ROW($1:$11))=0,ROW($1:$11)),INT(RAND()*(11-ROW(A1))+1)) 然后按下Ctrl+Shift+Enter三鍵結(jié)束數(shù)組公式。 2、然后,
kkk:
Randomize
A2數(shù)組公式,輸入后不要直接回車,要按三鍵 CTRL+SHIFT+回車 下拉。 =SMALL(IF(COUNTIF(A$1:A1,10-ROW($1:$10))=0,10-RO
x = Int(Rnd * 10) + 1
方法一:公式法 1、我們以生成1-10范圍內(nèi)的隨機(jī)數(shù)字為例,講述方法。 首先,在A2單元格中輸入公式:=SMALL(IF(COUNTIF($A$1:A1,ROW($1:$11))=0,ROW($1:$11)),INT(RAND()*(11-ROW(A1))+1)) 然后按下Ctrl+Shift+Enter三鍵結(jié)束數(shù)組公式。 2、然后,
If Application.CountIf(Range("A:A"), x) = 0 Then
先在選項(xiàng)中打開“啟用迭代循環(huán)”,并把最大迭代次數(shù)設(shè)置到1000或更大。然后選擇A1:10單元格,輸入: =IF(OR(N(ISNUMBER(A1)),COUNTIF($A$1:$A$10,A1)>1),RANDBETWEEN(1,100)) 按Ctrl+Enter。
Cells(i, 1) = x
1、在自己的電腦上打開EXCEL表格 2、首先創(chuàng)立了所需的數(shù)據(jù)表格,輸入自己的數(shù)據(jù) 3、將電腦下方EXCEL的sheet修改名字 4、將第一個表格中的數(shù)據(jù)建立在如圖所示的sheet里,如第一周,第二周,第三周 5、建立好幾個表格,舉例對這個問題進(jìn)行輔助說明
Else
GoTo kkk
首先,將你的所有單元格區(qū)域定義一個名稱。如:_1 然后,在函數(shù)或公式中引用它。 如你所說,先將M14~M27,M41~M58,等等,定義為一個名稱,這個名稱可以是任意的(除數(shù)字),如:_1 然后將你的式子中的M$14:M$27改為名稱引用"_1",結(jié)果如
End If
Next i
End Sub
在A2輸入公式: =SMALL(IF(COUNTIF(A$1:A1,ROW($1:$80)),99,ROW($1:$80)),1+INT(RAND()*(82-ROW(A1)))) 公式以CTRL+SHIFT+ENTER三鍵結(jié)束。 將公式向下復(fù)制到A21單元格。
按F5運(yùn)行,即可得到結(jié)果。
難點(diǎn)在不能重復(fù) A2粘貼公式 =SMALL(IF(COUNTIF(C$1:C1,ROW($1:$100)),65536,ROW($1:$100)),ROUNDUP(RAND()*(101-ROW(A1)),)) 粘貼完后不要回車,按ctrl+shift+enter三鍵組合結(jié)束 公式下拉即可
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
如何在excel表中生成0到9之間不重復(fù)的10個隨機(jī)數(shù)
A2數(shù)組公式,輸入后不要直接回車,要按三鍵 CTRL+SHIFT+回車 下拉。
=SMALL(IF(COUNTIF(A$1:A1,10-ROW($1:$10))=0,10-ROW($1:$10)),INT(RAND()*(10-ROW(A1)))+1)
或者用這公式也行:(此公式輸入后直接回車即可,無需按三鍵)
=SMALL(IF(COUNTIF(A$1:A1,{0;1;2;3;4;5;6;7;8;9})=0,{0;1;2;3;4;5;6;7;8;9}),INT(RAND()*(10-ROW(A1)))+1)
excel如何實(shí)現(xiàn)隨機(jī)抽取且不重復(fù)
方法一:公式法
1、我們以生成1-10范圍內(nèi)的隨機(jī)數(shù)字為例,講述方法。
首先,在A2單元格中輸入公式:=SMALL(IF(COUNTIF($A$1:A1,ROW($1:$11))=0,ROW($1:$11)),INT(RAND()*(11-ROW(A1))+1))
然后按下Ctrl+Shift+Enter三鍵結(jié)束數(shù)組公式。
2、然后,下拉填充公式到A12單元格,也就是填充11個單元格,為什么要填充11個呢,我們明明只要10個數(shù)字?這是因?yàn)?,最后一個數(shù)字是不會變化的,所以呢,要生成10個隨機(jī)數(shù),需要填充11個單元格,同樣的生成11個隨機(jī)數(shù)的話,要填充12個單元格,除此之外,公式中的11還要改成12。
3、生成隨機(jī)數(shù)后,每按下一次F9(或者其他單元格進(jìn)行一次計(jì)算),隨機(jī)數(shù)就會刷新一次,重新生成一組隨機(jī)數(shù),要注意嘍!
4、好了,一組不重復(fù)的隨機(jī)數(shù)字生成了,現(xiàn)在我們回頭看看這個公式是怎么實(shí)現(xiàn)的吧。首先看Small函數(shù)的第一個參數(shù),也就是數(shù)字區(qū)域,這里是利用if和Countif函數(shù)來實(shí)現(xiàn)此單元格上面的單元格區(qū)域,是否有當(dāng)前單元格的數(shù)字,如果有,就返回False,而如果沒有就返回這個數(shù)字,從而生成一組由上面單元格沒有的數(shù)字和Flase組成的序列,下圖是按F9得到的結(jié)果:
5、Small函數(shù)的第二個參數(shù),也就是從這個序列中取第幾個最小值,在得到的數(shù)字中,利用隨機(jī)函數(shù)rand和row函數(shù),實(shí)現(xiàn)在這有個個數(shù)中隨機(jī)抽取一個數(shù)字,從而得到排序中這個數(shù)字順序的一個數(shù)字。通過這樣一個數(shù)組公式,就實(shí)現(xiàn)了生成一組不重復(fù)的隨機(jī)數(shù)字啦。
方法二:VBA法
1、VBA功能強(qiáng)大,可以利用很多算法實(shí)現(xiàn)隨機(jī)數(shù)。這里介紹一種簡單的辦法。首先在Excel中按下Alt+F11,打開VBE界面,雙擊要生成隨機(jī)數(shù)的工作表,在右側(cè)空白處需要輸入代碼。
輸入代碼如下:
Sub m()
Range("A:A").ClearContents'這里是A列,根據(jù)需要修改
For i = 1 To 10'這里是10個數(shù)字,根據(jù)需要修改
kkk:
Randomize
x = Int(Rnd * 10) + 1
If Application.CountIf(Range("A:A"), x) = 0 Then
Cells(i, 1) = x
Else
GoTo kkk
End If
Next i
End Sub
2、代碼原理很簡單,就是隨機(jī)生成數(shù)字,如果A列中有了這個數(shù)字,就返回再次隨機(jī)生成,一直到?jīng)]有這個數(shù)字為止;利用循環(huán)生成制定數(shù)量的數(shù)字。
3、按下F5執(zhí)行代碼,就看到在對應(yīng)的Sheet中的對應(yīng)列,生成了一組隨機(jī)的不重復(fù)的數(shù)字。
excel中如何實(shí)現(xiàn)多個隨機(jī)數(shù)之間相互不重復(fù)
先在選項(xiàng)中打開“啟用迭代循環(huán)”,并把最大迭代次數(shù)設(shè)置到1000或更大。然后選擇A1:10單元格,輸入:
=IF(OR(N(ISNUMBER(A1)),COUNTIF($A$1:$A$10,A1)>1),RANDBETWEEN(1,100))
按Ctrl+Enter。
Excel如何隨機(jī)不重復(fù)引用指定范圍內(nèi)的數(shù)值
1、在自己的電腦上打開EXCEL表格
2、首先創(chuàng)立了所需的數(shù)據(jù)表格,輸入自己的數(shù)據(jù)
3、將電腦下方EXCEL的sheet修改名字
4、將第一個表格中的數(shù)據(jù)建立在如圖所示的sheet里,如第一周,第二周,第三周
5、建立好幾個表格,舉例對這個問題進(jìn)行輔助說明,內(nèi)容大概如下。
6、在一個sheet5中表格里,選擇要進(jìn)行統(tǒng)計(jì)的單元格輸入“=”和函數(shù),如此處則是=sum
7、然后點(diǎn)擊“第一周”,工作標(biāo)簽和相應(yīng)單元格。
8、選中第一周中的數(shù)據(jù),如圖所示
9、輸入“,”后再點(diǎn)擊“第二周”工作表和相應(yīng)單元格。
10、對數(shù)據(jù)進(jìn)行函數(shù)公式。對“第三周”,“第四周”工作表進(jìn)行相同操作。
11、輸入完成后加上")"點(diǎn)擊回車即可算出4個周的總計(jì)結(jié)果,可以向下拉動這個匯總表在單元格中做相對引用,完成所有單元格的計(jì)算。
excel中,隨機(jī)數(shù)不重復(fù)的問題
首先,將你的所有單元格區(qū)域定義一個名稱。如:_1
然后,在函數(shù)或公式中引用它。
如你所說,先將M14~M27,M41~M58,......等等,定義為一個名稱,這個名稱可以是任意的(除數(shù)字),如:_1
然后將你的式子中的M$14:M$27改為名稱引用"_1",結(jié)果如下:
=IF(COUNTIF(_1,M14)=1,M14,CHOOSE(RANDBETWEEN(1,3),"A","B",1)&RANDBETWEEN(1,18)&"﹟")
有關(guān)名稱的定義,應(yīng)該不需要我多說吧。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com