EXCEL中如何随机生成一列20位数字和字母组合。请高手列出公式 和详细使用方法,谢谢。我是小白

20位数字和字母的组合:第1位第6位第11位第16位为字母 其余16位为数字 例如(A1000 B2000 C3000 D4000)

公式的道理其实不复杂,问题是,写着挺费解的。
=CHAR(INT(RAND()*26+65))&TEXT(INT(RAND()*10000),"0000")&CHAR(INT(RAND()*26+65))&TEXT(INT(RAND()*10000),"0000")&CHAR(INT(RAND()*26+65))&TEXT(INT(RAND()*10000),"0000")&CHAR(INT(RAND()*26+65))&TEXT(INT(RAND()*10000),"0000")

这里涉及到的函数有:CHAR()根据ASCII代码返回A至Z26个字母。int()向下舍尾取整,RAND()产生一个随机的,大于等于0,小于1的,随机小数,ASCII代码中,大字字母A至Z的代码是65到90,小写a~z的代码是97至122,这些数返回给char()函数做为参数,就可以得到随机的26个字母中的任意一个。
TEXT()函数用来限制四位数字的表达形式是:0000,不会出现0123显示成123,其他的函数意义和前面解释的一样,这样一个随机的字母和一个随机的四位数用&连接显示在一起,是一组,四组连在一起,就是你要的这个数了,
根据以上的解释,如果你需要字母是小写,那就可以把65改成97。

一楼的办法不能把所有的字母选择上,如果要选择就得在公式里的数组里把所有的26个字母全列出来,对应的还得准备26个参照系,所以,基本上没有可操作性。
二楼的公式还得改一下,10的20次方,这个数字已经超出了EXCEL中最大位数的数字,后边的5位数字在公式一进入运算的时候,最后5位数强制显示为了00000了,如果你确实想用REplace 还来做的话,最后边的两组还得调整。

看这个公式的时候,你不妨以&为逗号,把公式分得成一段段的看,括号一对对的看,每一个公式里的括号的内容都是这个函数的参数。比如:rand()*26+65,这个函数表达式,得到一个数应该是小于90,大于65的带很多位小数位的数(EXCEL中默认显示9位小数,系统内部默认小数为其最大数据位数:即15位小数这就是为什么有时候EXCEL中显示的数手工加起来和EXCEL中求和公式得到的结果不一样的原因),因为rand()这个函数最小的可能是0,最大的可能是无限接近于1 而小于1。所以乘26以后,肯定小于26,大于等于0,加上65以后,的结果肯定65到90.9999999之间的一个数,经过INT()函数取整 以后,得到一个65到90之间的整数。做为参数返回到char()中得到字母。经&与下一组连接显示在一起,下一组的道理与这一组类似,rand()得到一个小数,乘10000以后得到一个四位整数,多位小数的数字,经INT取整,得到四位整数,用TEXT()限制这个四位数显示成:0000这种格式。这样,你再小白也应该能看明白了:)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-01
单元格输入
=LOOKUP(RAND(),{0,0.25,0.5,0.75},{"A","B","C","D"})&TEXT(RAND()*10000,"0000")&LOOKUP(RAND(),{0,0.25,0.5,0.75},{"A","B","C","D"})&TEXT(RAND()*10000,"0000")&LOOKUP(RAND(),{0,0.25,0.5,0.75},{"A","B","C","D"})&TEXT(RAND()*10000,"0000")&LOOKUP(RAND(),{0,0.25,0.5,0.75},{"A","B","C","D"})&TEXT(RAND()*10000,"0000")

LOOKUP(RAND(),{0,0.25,0.5,0.75},{"A","B","C","D"})是随机生成一个0~0.9999的数,如果生成的数字大于0小于0.25,则显示A,0.25-0.50就显示B,以此类推;
TEXT(RAND()*10000,"0000")是随机生成一个0~0.9999的数,乘以10000后应该是一个随机的一到四位数(小数点后还有),再用TEXT函数将这个一到四位数强制显示为四位数;
上面两个公式用&连接起来就是一个A8469这样的字符串,然后再用&连接三个同样的字符串,就得到了你要的结果。
第2个回答  2012-06-04
第一个单元格输入
=REPLACE(REPLACE(TEXT(INT(RAND()*10^9-1),"0000000000"),1,1,CHAR(INT(RAND()*26+65))),6,1,CHAR(INT(RAND()*26+65)))&REPLACE(REPLACE(TEXT(INT(RAND()*10^9-1),"0000000000"),1,1,CHAR(INT(RAND()*26+65))),6,1,CHAR(INT(RAND()*26+65)))
下拉填充公式即可。
第3个回答  2012-06-02
=TEXT((INT(RAND()*100000000)&INT(RAND()*100000000)),"\"&CHAR(INT(65+RAND()*26))&"0000\"&CHAR(INT(65+RAND()*26))&"0000\"&CHAR(INT(65+RAND()*26))&"0000\"&CHAR(INT(65+RAND()*26))&"0000")
相似回答