我想在 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&A2
B2,然后填写 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))