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

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:01:50
在一定整数范围内按一定比例取出一定数量的数组。例如在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个的时候,会死机或没有响应,另外你所说的用“大米的方法”,这到底怎么去做?

又改了一下,我想你用的是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 <> ""