Excel-随机生成英数字

2025-12-23 21:39 来源:学会计 阅读量:358

导读:在Excel的工作表中,如果想要随机生成一个可能是英文字(大、小写字母)或是数字(0,1,...,9),该如何处理? 【基本概念】 参考下图左,可知数字的ASCII码,位于48~57(10进制数),大

在Excel的工作表中,如果想要随机生成一个可能是英文字(大、小写字母)或是数字(0,1,...,9),该如何处理?
  【基本概念】
  参考下图左,可知数字的ASCII码,位于48~57(10进制数),大写字母位于65~90,小写字母位于97~122。


  【设定公式】
  先想想以下的公式:
  生成随机 0~9:{=CHAR(LARGE(ROW($48:$57),INT(RAND()*10+1)))}
  生成随机 A~Z:{=CHAR(LARGE(ROW($65:$90),INT(RAND()*26+1)))}
  生成随机 a~z:{=CHAR(LARGE(ROW($97:$122),INT(RAND()*26+1)))}
  这三个是数组公式,输入完成要按 Ctrl+Shift+Enter 键。
  本例可以如下做法:
  单元格L2:=CHAR(LARGE(ROW($1:$26)+{31,64,96},INT(RAND()*62+1)))
  这是数组公式,输入完成要按 Ctrl+Shift+Enter 键。
  复制单元格L2,往下各行粘贴。
  【原理解析】
  公式中:
  使用CHAR函数可以将一个10进制数,找出对应的字符。
  ROW($1:$26):生成1~26的数列。
  ROW($1:$26)+{31,64,96}:可以生成32~57、65~90、97~122的数列。(共可生成26X3个数列)
  因为数字的ASCII码,位于48~57(10进制数),大写字母位于65~90,小写字母位于97~122。
  所以33~47之间数列,并不是我们想要的范围。
  INT(RAND()*62+1):生成1~62之间的随机整数(10+26+26=62)。
  配合LARGE函数,可以取122~48之间的数。(97~122共26个,65~90共26个,48~57共10个)
  【列举】
  单元格L2:{=CHAR(LARGE(ROW($1:$26)+{31,64,96},INT(RAND()*62+1)))}
  假设INT(RAND()*62+1)随机数生成10。公式要找数列中第10个大的数字:
  33,65,97;34,66,98;35,67,99;36,68,100;37,69,101;38,70,102;39,71,103;40,72,104;41,73,105;42,74,106;43,75,107;44,76,108;45,77,109;46,78,110;47,79,111;48,80,112;49,81,113;50,82,114;51,83,115;52,84,116;53,85,117;54,86,118;55,87,119;56,88,120;57,89,121;58,90,122;
  由式中由大到小的第10个为“113”,对应的字符为“q”。
  因为随机数的最大值是62,也就是说只有由大到小的前62个数字有机会被挑选到。因此33~47(上式加粗+下划线)永远不会被挑选到。

您正在与金牌答疑老师聊天