第1个回答 2012-11-18
工具——选项——重新计算——勾选“迭代计算”——确定
在A1单元格输入如下公式:
=IF(COUNTIF($A$1:$X$1,A1)>1,INT(RAND()*48)+1,A1)
向右填充复制公式。复制到X列
上面生成的全是整数。如果需要小数,把int去掉。本回答被网友采纳
第2个回答 2012-11-18
发我给你写宏,这个用公式不好搞定
QQ 1052974911
按Alt+F11 调出VBE, 把如下复制进去, 按F5运行即可
Public Sub sjs()
Dim rng As Range, rng1 As Range
For i = 1 To 8
Set rng = Range(Cells(1, i), Cells(24, i))
rng.ClearContents
Randomize
For Each rng1 In rng
Do
rng1 = Int(Rnd * 100)
Loop Until Application.WorksheetFunction.CountIf(rng, rng1) = 1
Next
Next
End Sub本回答被提问者采纳
第3个回答 2012-11-18
保证A列单元格为空
在B1单元格输入公式
=SMALL(IF(COUNTIF($A$1:A$1,ROW($1:$49))=0,ROW($1:$49)),ROUNDUP((50-COLUMN(A1))*RAND(),))
输入后,不要直接按回车键,需要按下SHIFT和CTRL两个键的同时再按下ENTER键
然后向右填充
公式通过测试
第4个回答 2012-11-18
生成随机数是没问题的。
但是,不能确保出现重复,虽然这个概率很小很小。
第5个回答 2012-11-18
用VBA实现,方便快捷。 用函数很难实现你的需要。