用简便的方法生成一个10位的随机字符串

如题:我原本想用=REPT(CHAR(INT(RAND()*26)+64),10)的方法,但是不行,生成的字符是重复的。
有一种方法就是把CHAR(INT(RAND()*26)+64)用"&"连接10次,但是太麻烦,请问是否有简便的生成方法?

感谢islandsea0的回答,花了你那么多时间,真是不好意思,你的答案我也试过了,确实可以生成10位字串,不过也存在如下的不足,

一是生成的字符不是随机的,因为是直接按顺序在字母表中取,所以字符很有规律。

二是只能生成一个字符,而不能多次生成,这是因为公式在取数的时候没有用绝对位置,这个好解决。

总的来说这也提出了一个很好的思路,具体实现我也会再想想,大家有好的思路也请帮帮忙哈,实在不行我还是只能用VBA了。
最新回答
泣绕忪迎笑

2026-10-21 09:03:35

你的目的是生成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及以上的再循环到头部再接着取。
江心薄雾起

2026-02-23 20:55:40

几年级的 我没教过 - -!
收起 1条折叠回答