Board logo

标题: [求助] 急!急!EXCEL高手请进 [打印本页]

作者: xwpgy    时间: 2008-6-27 20:21     标题: 急!急!EXCEL高手请进

我想在EXCEL中从1至50中随机抽出几个数,我用ROUNDUP(50*RAND(),0)函数,可随机抽出的数有重复,而我想要不能重复的数,请各位兄弟姐妹帮忙,看有什么方法实现。先谢了各位。
作者: lakers007    时间: 2008-6-27 20:25

没玩過,LZ不能帮你哈,在问问另外的人哈!
作者: xwpgy    时间: 2008-6-27 20:45

我可一直在等着呢,就没有人能帮助我吗?????
作者: llyzzgg    时间: 2008-6-27 21:13

对了,用VBA吧,楼上也说了,不会的话,跟贴说一下,如果有时间的话,给你编写一个贴上去
作者: 大力炒盘手    时间: 2008-6-27 21:36

随机和不重复是2个判断,excel原有命令貌似没有这样的功能,只有加程序的判断了。
作者: xwpgy    时间: 2008-6-27 22:06

先谢楼上各位了。我用ROUNDUP(50*RAND(),0)函数实现了,可就是有重复,用VB我可不会,大家多帮忙。
作者: Lyc    时间: 2008-6-27 22:30

你的问题本身有问题,roundup不是抽取函数。你可以用抽取函数来试
作者: 我不是你    时间: 2008-6-27 22:42

正在学习中,希望高手帮他解答一下.这些东西俺无能为力哦.
作者: willam    时间: 2008-6-27 23:24

未经验证,但希望对楼主有用,从网上随手google下来的。
-------------------------------------------------------------------------------------
随机不重复数字序列的生成方法

有些情形下,我们需要生成一个不重复的随机序列。

比如:我们要模拟洗牌,将一副扑克牌去掉大小怪后剩下的52张打乱。

比较笨的方法是在1-52间每生成一个随机数后,检查该随机数是否出现过,如果是第一次出现,就放到序列里,否则重新生成一个随机数作检查。在 excel worksheet里面用这种办法,会造成if多层嵌套,不胜其烦,在VBA里面做简单一些,但是效率太差,越到序列的后端,效率越差。

当然也有比较好的办法,在VBA里面,将a(1)-a(52)分别赋予1-52,然后做52次循环,例如,第s次生成一个1-52间的随机数r,将a(s)与a(r)互换,这样的话,就打乱了原有序列,得到一个不重复的随机序列。

VBA里这个算法是很容易实现的,但是,处于通用性和安全考虑,有的时候我们并不希望用VBA,我们来看看在worksheet里面如何利用内置函数实现这个功能。

(1)在A1-A52间填入"=INT(RAND()*52)+1",产生1-52间的随机数,注意这里是有重复的

(2)在B1-B52间填入1-52

(3)在C54-BB54填入1-52

(4)在C1填入"=IF(ROW()=C$54,INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),IF(ROW()=INDEX($A$1:$A$52,C$54),INDEX(B$1:B$52,C$54),B1))"。

分项解释:

a:ROW()=C$54,如果当前行等于当前交换所排的序号

b:INDEX(B$1:B$52,INDEX($A$1:$A$52,C$54)),返回在B1到B52中选择A1:A52中的第C54个值

c:IF(ROW()=INDEX($A$1:$A$52,C$54),否则的话,如果当前行等于A1:A52中第C54个值,则:

d:INDEX(B$1:B$52,C$54),返回B1:B52中的第C54个值

e:若以上条件都不满足,则返回B1

(5)将C1复制到C1:BA52这个区域里面

(6)在BA1:BA52中,我们就得到了一个不重复的随机序列,按F9可以生成一个新序列。

PS:摘自:http://artin.spaces.live.com/blo ... 2B4C60D%21231.entry
作者: levibb    时间: 2008-6-28 00:19

当初学习的时候没好好学哦,其实EXCEL的功能是相当的强大哦
作者: kcsh362100    时间: 2008-6-28 00:37

在Excel中输入公式后,有时不能正确地计算出结果,并在单元格内显示一个错误信息,这些错误的产生,有的是因公式本身产生的,有的不是。下面就介绍一下几种常见的错误信息,并提出避免出错的办法。
  1)错误值:####   
  含义:输入到单元格中的数据太长或单元格公式所产生的结果太大,使结果在单元格中显示不下。或是日期和时间格式的单元格做减法,出现了负值。
  解决办法:增加列的宽度,使结果能够完全显示。如果是由日期或时间相减产生了负值引起的,可以改变单元格的格式,比如改为文本格式,结果为负的时间量。   
  2)错误值:#DIV/0!   
  含义:试图除以0。这个错误的产生通常有下面几种情况:除数为0、在公式中除数使用了空单元格或是包含零值单元格的单元格引用。
  解决办法:修改单元格引用,或者在用作除数的单元格中输入不为零的值。   
  3)错误值:#VALUE!   
  含义:输入引用文本项的数学公式。如果使用了不正确的参数或运算符,或者当执行自动更正公式功能时不能更正公式,都将产生错误信息#VALUE!。   
  解决办法:这时应确认公式或函数所需的运算符或参数正确,并且公式引用的单元格中包含有效的数值。例如,单元格C4中有一个数字或逻辑值,而单元格D4包含文本,则在计算公式=C4+D4时,系统不能将文本转换为正确的数据类型,因而返回错误值#VALUE!。   
  4)错误值:#REF!   
  含义:删除了被公式引用的单元格范围。
  解决办法:恢复被引用的单元格范围,或是重新设定引用范围。
  5)错误值:#N/A   
  含义:无信息可用于所要执行的计算。在建立模型时,用户可以在单元格中输入#N/A,以表明正在等待数据。任何引用含有#N/A值的单元格都将返回#N/A。
  解决办法:在等待数据的单元格内填充上数据。
  6)错误值:#NAME?   
  含义:在公式中使用了Excel所不能识别的文本,比如可能是输错了名称,或是输入了一个已删除的名称,如果没有将文字串括在双引号中,也会产生此错误值
  解决办法:如果是使用了不存在的名称而产生这类错误,应确认使用的名称确实存在;如果是名称,函数名拼写错误应就改正过来;将文字串括在双引号中;确认公式中使用的所有区域引用都使用了冒号(:)。例如:SUM(C1:C10)。   注意将公式中的文本括在双引号中。
  7)错误值:#NUM! 含义:提供了无效的参数给工作表函数,或是公式的结果太大或太小而无法在工作表中表示。
  解决办法:确认函数中使用的参数类型正确。如果是公式结果太大或太小,就要修改公式,使其结果在-1×10307和1×10307之间。
  8)错误值:#NULL! 含义:在公式中的两个范围之间插入一个空格以表示交叉点,但这两个范围没有公共单元格。比如输入:“=SUM(A1:A10 C1:C10)”,就会产生这种情况。
  解决办法: 取消两个范围之间的空格。上式可改为“=SUM(A1:A10 ,C1:C10)”




欢迎光临 SiS001! Board - [第一会所 关闭注册] (http://23.225.172.100/bbs1/) Powered by Discuz! 7.2