EXCEL如何随机生成指定范围的不重复的整数?

EXCEL如何在指定的部分单元格内,随机生成指定范围的不重复的整数?如:在A1:A17中随机生成1-36之间的整数,A1:A17之间的数字不能重复。谢谢!补充问题:不用V... EXCEL如何在指定的部分单元格内,随机生成指定范围的不重复的整数?如:
在A1:A17中随机生成1-36之间的整数,A1:A17之间的数字不能重复。谢谢!
补充问题:不用VB,不要用宏来实现。
展开
 我来答
pepe3399
2015-10-26 · 知道合伙人软件行家
pepe3399
知道合伙人软件行家
采纳数:1259 获赞数:5940
1988年毕业于苏州市职业大学计算机专业 从事软件开发5年 从事生产管理20年

向TA提问 私信TA
展开全部

用VBA编程可以实现。其方法有多种,一是字典功能,凡是重复的无法插入字典。其缺陷是程序运行的时间不确定,发生重复就继续生成随机数,直到没有重复为止。另一种是第一次生成1~100的随机数,将得到的随机数取走;再生成1~99的随机数,。。。这样循环到1,就完成了题目要求。

我们采用第二种方法做成如下代码:

Sub 随机数()

Dim mYarr(1 To 100, 1 To 2)

Dim Tarr(1 To 100, 1 To 2) '存放随机生成的数

Dim I, J, K, L As Integer

'读取原始数据

I = 2

Do While Cells(I, 1) > 0

mYarr(I - 1, 1) = Cells(I, 1)

mYarr(I - 1, 2) = Cells(I, 2)

I = I + 1

Loop

I = I - 2

L = 1

For K = I To 1 Step -1

Randomize

J = Int((Rnd * K) + 1)

Tarr(L, 1) = L

Tarr(L, 2) = mYarr(J, 2)

'将数值自J+1个开始向上移动一格

    For M = J To I - 1

        mYarr(M, 1) = mYarr(M + 1, 1)

        mYarr(M, 2) = mYarr(M + 1, 2)

    

    Next M

L = L + 1

Next K

'输出随机整数

For J = 1 To I

  Cells(J + 1, 5) = Tarr(J, 1)

  Cells(J + 1, 6) = Tarr(J, 2)

Next J

End Sub

该宏

第一步:将第1、2列数据读入MYARR数组

第二步:随机生成随机数,将该随机数对应的数值移入TARR数组(目标数组)

第三步:将目标数组TARR数值输出到第5、6列。运行结果如图:

可以看到G列检查是否有重复列,结果是没有。

他眯
2010-07-13 · TA获得超过7427个赞
知道大有可为答主
回答量:2001
采纳率:75%
帮助的人:2258万
展开全部
做一个按钮或录一个宏,把内容换为如下:

Dim a As Range, b As Range
Set a = Range("A1:A17")
a.ClearContents
Randomize
For Each b In a
Do
b = Int(1 + Rnd * 36)
Loop Until Application.WorksheetFunction.CountIf(a, b) = 1
Next
说明:每点一次按钮或执行一次宏,就可以生成一次新的数.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sundyju
2010-07-13 · TA获得超过1万个赞
知道大有可为答主
回答量:2422
采纳率:0%
帮助的人:2534万
展开全部
增加B、C、D三列辅助列(设置好以后可以把它们隐藏起来)。
B1输入=RAND() 下拉到B36
C1输入1 向下填充1、2、3...到C36
D1输入=SMALL($B$1:$B$36,C1) 下拉到D36
A1输入=VLOOKUP(D1,$B$1:$C$36,2,FALSE) 下拉到A17
搞定
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaohua_yan
2010-07-13 · TA获得超过237个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:0
展开全部
在A1-A36中输入1,2,3,4.......36
在B1中输入=rand(),下拉到B36
然后换B例排序,
A例的前17个就是你要的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式