生成字符的随机字符串(Microsoft Excel)
南希试图让Excel选择50个“数字”,每个数字包含八个随机字符。字符可以是数字或字母(大写或小写)。
如果您的随机数实际上是数字(仅数字),则生成它们将很容易。您需要做的就是以这种方式使用RANDBETWEEN函数(在Analysis ToolPak中):
=RANDBETWEEN(10000000,99999999)
但是,这不是南希想要的。她的随机“数字”也可以包含大写和小写字母。这变得有点粘性。
但是,有几种方法可以使用。
一种方法是将所有可能的字符放入单个单元格中,例如B7:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
将此单元格命名为MySource,例如MySource。然后,您可以使用以下公式返回随机字符串:
=MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)
公式很长;为了清楚起见,它已分成几行,但仍然是一个公式。它串联了从您输入到单元格B7中的源中提取的八个字符。
另一种方法是创建一个表,其中包含您希望在随机文本字符串中使用的所有字符。首先将数字1到62放入一列,每行一个数字。在这些数字的左侧放置您的字符-A,B,C,D等(这应该与您在上一技巧中在单元格B7中放置的字符相同。)选择62行的两列并为其命名,例如MyTable。然后,您可以使用以下公式生成随机字符:
=VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2)
同样,请记住,这是一个公式,尽管它比以前的公式短了一点。
到目前为止介绍的每种方法都有一个缺点:每次重新计算工作表时都会重新生成它们。因此,很难产生一个不会定期更改的随机生成的字符串。解决此问题的最佳方法是使用宏,但您不一定要使用用户定义的函数。为什么?因为它也会在每次重新计算工作表时更改其结果。
而是需要一个宏,该宏将从特定单元格位置开始将随机字符串放入工作簿中。以下是此类宏的示例:
Sub MakeRandom() Dim J As Integer Dim K As Integer Dim iTemp As Integer Dim sNumber As String Dim bOK As Boolean Range("D4").Activate Randomize For J = 1 To 50 sNumber = "" For K = 1 To 8 Do iTemp = Int((122 - 48 + 1) * Rnd + 48) Select Case iTemp Case 48 To 57, 65 To 90, 97 To 122 bOK = True Case Else bOK = False End Select Loop Until bOK bOK = False sNumber = sNumber & Chr(iTemp) Next K ActiveCell.Value = sNumber ActiveCell.Offset(1, 0).Select Next J End Sub
运行宏,并且单元格D4:D53中的所有内容都将被随机值覆盖。如果要将值写入不同的位置,请更改宏开头附近的Range语句。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(11707)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较早菜单界面找到此技巧的版本:
链接:/ excel-Generating_Random_Strings_of_Characters [生成随机字符字符串]。