基本的

基本的

我想在 Excel 中创建一个随机长度的字母表字符串。例如,“jlskdjf”、“kjlk”、“kljsodif”等。我该怎么做?

答案1

基本的

假设您想从小写字母(az)生成一个随机长度(1-8 个字符)的字符串。

=LEFT( CHAR(RAND()*26+97) & CHAR(RAND()*26+97) & 
       CHAR(RAND()*26+97) & CHAR(RAND()*26+97) & 
       CHAR(RAND()*26+97) & CHAR(RAND()*26+97) & 
       CHAR(RAND()*26+97) & CHAR(RAND()*26+97),
       RAND()*8+1)

每个CHAR(...)都会生成 1 个随机小写字母。

要使用大写字母(AZ)代替小写字母,您可以用 替换CHAR(RAND()*26+97)CHAR(RAND()*26+65)因为 AZ 的 ASCII 码是 65-90,而 az 的 ASCII 码是 97-122。

为了简化公式,您可以使用RANDBETWEEN()分析工具包取代RAND()*xx+yy


先进的

假设您想从特定字符生成一个随机长度(1-8 个字符)的字符串。

您可以在单元格中输入所需的字符A1, 例如:

abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()

然后,

=LEFT( MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) & 
       MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
       MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
       MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1),
       RAND()*8+1)

每个人MID(...)从 A1 中获取 1 个随机字符。

答案2

嗯。使用 VBA 创建一个函数来做这件事相当容易。使用公式则稍微复杂一些。

  • =CHAR(RANDBETWEEN(97,122))显然会给你一个字母。所以在 A 列中输入十个这样的字母。
  • 然后在下一列中输入=A1单元格 B1。
  • 输入=B1&A2B2,然后填写 B2:B10。(令人讨厌的是,CONCATENATE 不接受范围。)
  • 在单元格 C2 中输入=OFFSET(B1,RANDBETWEEN(0,9),0)

可能有更简单的方法,使用数组公式或者其他方法。

答案3

此公式不需要包含“abc...ABC...012”的单元格

从 [a-zA-Z0-9] 中随机抽取 1 个字符。

=CHAR(CHOOSE(RANDBETWEEN(1,3),RANDBETWEEN(48,57),RANDBETWEEN(65,90),RANDBETWEEN(97,122)))

如果需要更多字符,请复制 CHAR(...) 并用 & 分隔它们。

此解决方案来自 Oaktree http://www.mrexcel.com/forum/excel-questions/332116-generate-random-alphanumeric-code.html

答案4

=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))

相关内容