如题:我原本想用=REPT(CHAR(INT(RAND()*26)+64),10)的方法,但是不行,生成的字符是重复的。 有一种方法就是把CHAR(INT(RAND()*26)+64)用"&"连接10次,但是太麻烦,请问是否有简便的生成方法?感谢islandsea0的回答,花了你那么多时间,真是不好意思,你的答案我也试过了,确实可以生成10位字串,不过也存在如下的不足,一是生成的字符不是随机的,因为是直接按顺序在字母表中取,所以字符很有规律。二是只能生成一个字符,而不能多次生成,这是因为公式在取数的时候没有用绝对位置,这个好解决。总的来说这也提出了一个很好的思路,具体实现我也会再想想,大家有好的思路也请帮帮忙哈,实在不行我还是只能用VBA了。
你的目的是生成10个随机大写字母。测试了一下你的公式,结果和你一样。又作了一下REPT函数的最简单的测试,=REPT(RAND(),2)很显然REPT重复是在RAND结束才开始运行的,所以达不到你的效果。得到字母有很多种办法,你的也是其中一种,但字符连接起来就不容易了。一种方法就是你不想用的用&或CONCATENATE(),你觉得麻烦。另一种方法就是VB编程了,自己搞个循环函数。其它实在想不出办法了。想了很久,也只想出了一个可部分达到你目的方法,这个方法可以从a-z这26个字母序列中任取了10个相连的字母,抛砖引玉,估你参考吧!A1=abcdefghijklmnopqrstuvwxyz 先自定义一个字符串B1=INT(RAND()*25+1) 附机生机一个1-26之间的数字 C==IF(B1<18,MID(A1,INT(B1),10),RIGHT(A1,27-B1)&LEFT(A1,B1-17)) 取字符串,因不知随机函数在一个公式里被引用多次会不会生成不同的数,所以先把这个数放到B1里,确定下来再拿来判断。小于18的数直接向后取10个,18及以上的再循环到头部再接着取。