excel高手,有请-随机取数问题

在一定整数范围内按一定比例取出一定数量的数组。例如在1-50内,1-15 为50%,16-36为30%,37-50为20%,按这个比例随机选取500组(每组由8个数字组成)。请问excel里如何实现?
那么,对如何进行每组由小到大的排序呢?还有一个要求:如何在一组数字里不能有相同的数字出现。
非常感谢你们三位的帮助。另外,护国法师,在运行中出现“运行时错误 438,对象不支持改属性或方法”,调试指向“ActiveSheet.Sort.SortFields.Clear”。另外,原来取数按数字大小顺序和范围(如从1-15、16-36、37-50),如果改为一些指定或特定数字,又如何呢?这可能会比较复杂,有一定的难度。真不好意思。
排序问题解决了。但我将每组数量从8个数字改为小于或大于8个的时候,会死机或没有响应,另外你所说的用“大米的方法”,这到底怎么去做?

=if(rand()在A1输入上面的公式,把鼠标放到A1右下角,往右边拖到H列(这样就有8个了),再往下拖到第500行.这样每行8个,总共500行数字.解释:rand()产生大于等于0,小于1的随机数,如果产生的随机数小于0.5(即50%的机率),则生成介于1-15的整数,如果大于0.5,再生成一个随机数,这个随机数如果小于0.6(50%乘60%为30%的机率),则生成16-36的随机数,否则生成37-50的随机数(20%的机率).现附上示例图片(有机率统计):



温馨提示:内容为网友见解,仅供参考
第1个回答  2008-07-23
又改了一下,我想你用的是2003,而我是在2007中测试的.你再试试吧.另外你要将数字改成其他指定数字,可以用大米的方法吧.你试试好了.

Sub random()
Dim a As Integer
Dim b As Integer
a = Int(Rnd() * 500) + 1
b = Int(Rnd() * 8) + 1
For x = 1 To 2000
Do While Cells(a, b).Value <> ""
a = Int(Rnd() * 500) + 1
b = Int(Rnd() * 8) + 1
Loop
Cells(a, b) = Int(Rnd() * 15) + 1
Do While WorksheetFunction.CountIf(Range("a" & a & ":h" & a), Cells(a, b)) > 1
Cells(a, b) = Int(Rnd() * 15) + 1
Loop
Next
For x = 1 To 1200
Do While Cells(a, b).Value <> ""
a = Int(Rnd() * 500) + 1
b = Int(Rnd() * 8) + 1
Loop
Cells(a, b) = Int(Rnd() * 21) + 16
Do While WorksheetFunction.CountIf(Range("a" & a & ":h" & a), Cells(a, b)) > 1
Cells(a, b) = Int(Rnd() * 21) + 16
Loop
Next
For x = 1 To 800
Do While Cells(a, b).Value <> ""
a = Int(Rnd() * 500) + 1
b = Int(Rnd() * 8) + 1
Loop
Cells(a, b) = Int(Rnd() * 14) + 37
Do While WorksheetFunction.CountIf(Range("a" & a & ":h" & a), Cells(a, b)) > 1
Cells(a, b) = Int(Rnd() * 14) + 37
Loop
Next
For x = 1 To 500
Range("A" & x & ":h" & x).Sort Key1:=Range("A" & x), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
SortMethod:=xlPinYin, DataOption1:=xlSortNormal
Next
End Sub本回答被提问者采纳
第2个回答  2008-07-23
1.首先
工具-加载宏,勾选分析工具库.
勾选后,工具菜单下出现"数据分析"菜单

2.在A1:A50输入序列1-50
B1:B15输入=0.5/50
B16:B36输入=0.3/21
B37:B50输入=0.2/14

3.工具-数据分析,随机数字发生器.
变量个数:8
随机数个数:500
分布:离散
数值与概率输入区域:A1:B50
输出新工作表组,默认不改即可.
确定.

从小到大排序显示:

I1输入公式:
=SMALL($A1:$H1,COLUMN(A1))
向右拖动填充公式到P1,
然后选中I1:P1
向下拖动到P500

Excel高手请进,关于随机选取单元格填充的问题
1、将所有组合列出,装入数组。2、随机抽取——与已抽取的项目比对,若不同,则返回值。

excel高手请进:100个姓名后面对应100个电话号码,在随机抽取20个...
1. 在原有数据旁边添加两列,我们将其称为“辅助列”。2. 在辅助列中,我们可以使用Excel的“=RAND()”函数来生成随机数。3. 对含有随机数的列进行排序,这样排序后的前20个记录就是我们要随机抽取的名字。4. 将这20个记录复制并粘贴到其他地方,以便进行后续操作。5. 最后,对原始数据中的“姓...

有趣的思考题,excel高手请。随进选取并组合是什么公式?自动生成重复...
第一种情况比较简单:主要利用随机函数rand()就可以解决了 第二种情况相对有点复杂,我也是一步步的写出的公式,主要思路是:比如我要看单元格C6应该是哪个城市,我先看C5单元格里的城市数量有没有达到重复的次数,如果达到了,那C6单元格就是下一个城市,如果达不到那就还是C5单元格的城市 ...

excel高手请进 选出随即数目且不重复
1、“=RAND()”,这是返回一个大于0,小于1的随机数,你可以设置这个数乘以一个常数。如,我要一个在10000以内的随机数,可设置为“=RAND()*10000”。2、“=RANDBETWEEN(1,33)”这是设置为1-33之间的随机自然数。Bottom 函数 RANDBETWEEN 将返回的最小整数。Top 函数 RANDBETWEEN 将返回的最大...

excel表格批处理提取最大数,高手请进,高分求助,粘贴党滚?
方法一:1、复制A列到C列,点“数据”,选C列,重复项,删除重复项,如图:2.选当前选定区域,删除重复项,如图:3.直接选删除重复项,如图:4.结果如图:5.D1输入公式:=IF(C1="","","有 "&COUNTIF(A:A,C1)&" 轨")或 =IF(C1="","","有 "&LOOKUP(C1,A:A,B:B)&" 轨")然...

excel 取数问题,盼高手
第一个问题要将数据从小到大取出来,结果放在一个单元格中有困难,如果放在几个连续的单元格中就可以做到,假定原数据在A1,请在B1输入公式:=MIN(1*MID($A$1,ROW(INDIRECT("1:"&LEN($A$1))),1))公式以Ctrl+Shift+Enter三键结束。在C1单元格输入公式:=IF(OR($B$1:B1=MAX(1*MID($A$1,...

请教excel高手关于excel随机函数的问题
1、选中A1:A184,在A1中输入如下公式后填充至其余单元格:=int(70*rand()+1)或=randbetween(1,70)2、在B1:B70生成整数序列1-70,代表人数的编号。3、选中C1:C70,在C1中输入如下公式后填充至其余单元格:=countif($A$1:$A$184,B1)+1 4、统计相同硬币数的人数:(1)选中D1:D10,产生...

请教有关Excel 随机抽取的问题
在B列做一个函数 =rand(),在之后再做一个函数 =rank(c1,$c$1:$c$100),按这一列排序,点一下一个随机排序,你可以取其前五位。只要你前面的100个名字不重复,这样取的结果一定不重复。绝对随机。补充,两个函数都要向下复制。

请教下 EXCEL 在一列资料中随机挑选20项 该如何操作(公式也可以)_百度...
然后在任意位置输入公式: =INDEX(A$1:A$100,MATCH(SMALL(B$1:B$100,ROW(A1)),B$1:B$100,)) 下拉填充19行 A1:A100为要随机挑选资料的区域 B1:B100为RAND()函式生成的资料区域 请教高手:在Excel中怎样实现一列资料的随机选取? 你的问题描述不是很清楚,如果你是想在某列中(如A...

EXCEL自动选取数值问题,高分求教!高手请进!
ABC三列,第一行标题,输入值在E2,E3公式 =INDIRECT("c"&MATCH(LOOKUP(E2,A2:A19),A2:A19,0)+MOD(E2*10,10))

相似回答
大家正在搜