永发信息网

EXCEL中随机抽样,要求输入一个数字如256从中随机抽取百分之十的数字,即27个数字,在1-10中抽取1个

答案:4  悬赏:70  手机版
解决时间 2021-03-16 04:12
EXCEL中随机抽样,要求输入一个数字如256从中随机抽取百分之十的数字,即27个数字,在1-10中抽取1个
最佳答案
你输入的这个数字,跟你随机抽取的这个范围比如256有什么关系?是不是你输入10000,你就要从1到10000抽取1000个随机数字?还是每次不能重复?追问从10000里抽1000个数字,1-10一个,11-20一个....9990-10000一个,,就是想平均点而且这样取肯定没重复的。上面那个是240-256中取两个所以要求不重复追答相当有难度啊,我有空了帮你想想,因为你这个输入的数据不定,随机取的数字也就可能量很大追问(⊙o⊙)嗯,谢谢啊!追答好了,你要抽入的范围如256写在 A1,把我的代码复制到VBA编辑器里,插入一个按钮指定代码,然后不停的点按钮就可以看见数字是随机变的,都显示在B列 从以10为单位的范围内返回

Sub rr()
Dim i%, k%, j%, a%, arr()
For i = 1 To Int(Range("a1") / 10) + 1
a = Int(Rnd() * 10 + 1) + (i - 1) * 10
ReDim Preserve arr(1 To i)
arr(i) = a
Next
If arr(UBound(arr)) > Range("a1") Then arr(UBound(arr)) = Range("a1")
Range("b1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub追问这个取数可以四舍五入么?就是300就是取的30个,306就是取31个,这个方法300也是取31个,请问要怎么修改呢?谢谢追答Sub rr()
Dim i%, a%, arr()
Range("b:b").ClearContents
For i = 1 To Application.Round(Range("a1") / 10, 0)
a = Int(Rnd() * 10 + 1) + (i - 1) * 10
ReDim Preserve arr(1 To i)
arr(i) = a
Next
If arr(UBound(arr)) > Range("a1") Then arr(UBound(arr)) = Range("a1")
Range("b1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub追问恩恩,,很好,问下如果要求进一怎么修改,就是300还是取30,,301就取31个,,大神,,快成功了- -求帮忙,再顺便问一下Range("b:b").ClearContents这一句是什么作用追答只需要把round 改成roundup就行了嘛,那一句是清空B列的,如果没有这一句你第一A1的数字是300,下次变成100了,11行以后的数字还是300的,所以必须要运行程序的时候清空B列

Sub rr()
Dim i%, a%, arr()
Range("b:b").ClearContents
For i = 1 To Application.RoundUp(Range("a1") / 10, 0)
a = Int(Rnd() * 10 + 1) + (i - 1) * 10
ReDim Preserve arr(1 To i)
arr(i) = a
Next
If arr(UBound(arr)) > Range("a1") Then arr(UBound(arr)) = Range("a1")
Range("b1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub追问额,,试验了下,发现个小问题- -比如301的时候301必然出现- -能不能就是不能整除的时候是290-301取两个数,如你输入301-309的时候都是290-这个数之间取两个数- -话说能加下联系方式么?我QQ:523148248,求大神指导追答你这样可能会取重复的,290-300是是一个段,300-301还是 290-301,有重复区域,我现在的程序是,当是301~309之间的时候 比如:306吧 ,上边算式取出的数字可能超过306,这个时候我就让大于306的数字返回306!我感觉比你所说的合理追问额,,我是说本来290-300不是一个段么?如果输入的数不是整数如301,那前面都一样,280-290取一个然后290-301取两个,因为301就一个数这样出现的概率就是100%了,,所以我想把301放到前面一段然后直接从前面一段取两个数字。这样可以做到么?谢谢追答你真是变化多端啊
Sub rr()
Dim i%, a%, arr(), b%, c%, d%
Range("b:b").ClearContents
For i = 1 To Int(Range("a1") / 10)
a = Int(Rnd() * 10 + 1) + (i - 1) * 10
ReDim Preserve arr(1 To i)
arr(i) = a
Next
line:
b = arr(UBound(arr)) Mod 10
c = (Range("a1") - (UBound(arr) - 1) * 10) * Rnd() + 1
d = (UBound(arr) - 1) * 10
If b = c Then
GoTo line
Else
ReDim Preserve arr(1 To UBound(arr) + 1)
arr(UBound(arr)) = c + d
End If
Range("b1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub
全部回答
我的天啊好复杂啊 你去 百度学学教程
如果允许用宏的话 留下联系方式 给你发个样本追问QQ:523148248,谢谢追答加了 发个信息给我
在a1到a1000分别输入1到1000连续的自然数
在b1输入:
=RAND()
然后下拉到b1000单元格。
在d1输入:
=IF(INT(C$1/10)下拉到d100单元格。
然后在c1输入任意1000以内的数值后,在d列均会随机抽取出10%的随机的不重复的数值。
如果你需要更多的数值,则将a、b、d列分别响应的下拉行数就可以了。追问能像我说的那样1-10取一个,11-20取一个......如果不整除240-256取两个,就是取样的结果相对平均点,这样可以做到么?追答=IF(INT(c$1/10)改好了。你试试追问额,,D行超过D10的后面都显示不出来,,前面的好像都对的,可以修改么?谢谢追答看了你对其他回答人的追问后。改了一下函数。支持四舍五入,支持个位数为1至4时,包含这些数。
在b1输入:
=IF(ROUND(A$1/10,0)0),INT(RAND()*11),0))
然后下拉。
在a1输入任意数后,在b列就能得到你需要的数。追问恩,别的功能都可以,那个四舍五入能改为进一么?就是251也是26个数字,O(∩_∩)O谢谢追答不会呀。你再确认一下吧。我自己试过,在输入245到254的时候,均只显示25个数。
你不会是要输入251的时候,显示的是26个数字吧?如果是这样,要四舍五入干嘛呢?如果你要的是这个。用下面的公式:
=IF(ROUNDUP(A$1/10,0)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蟹候酒吧地址在哪,我要去那里办事
男人穷时把老婆当个宝,有钱了会怎样
刚才我重启了一下我的iphoneSE,结果我按的是
什么叫供给侧?为什么要对供给侧实行结构性改
臭和味怎么念
鑫源地址在什么地方,想过去办事
兄弟们 是不是钻石都要补分的?上赛季钻5补分
心里压力很大,怎样才能放开心里压力史心理高
求问广大的网友们:特别想知道这是什么品种的
图是探究“浮力的大小与哪些因素有关”的若干
宿登高速公路/S203(路口)我想知道这个在什么
桂花鱼清蒸,怎么做放什么调料
黄陂长轩岭派出所星期天上班吗
怎样介赌
每一个人死后,世界对于他来说到底存在还是不
推荐资讯
起亚k3s按哪个键把后视镜收缩
谁能找到阳光沙滩海浪仙人掌老船长的绘画图片
为什么是凤求凰,而不是凰求凤呢?
三加二学校是什么意思
查到食品过期该罚款总价值160罚款五万怎么处
新境界茶楼地址在什么地方,想过去办事
有个老式的吕壳手电钻是三插的能改成两插的吗
一纸馋韩国料理在哪里啊,我有事要去这个地方
海豪超市在哪里啊,我有事要去这个地方
韵达快递从太原到石家庄需要几天……
surface3网页看视频卡·怎么办
姓郑男女孩名,要有智慧的意义在里面
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?