在Excel中生成随机字符串(带有毫秒字符)

时间:2016-10-06 00:29:43

标签: random generator

我正在寻找Microsoft Excel 2013的加载项,它可以生成任意字符(数百万)的真正随机字符串,尤其是(A-Z)(a-z)(0-9)。请告诉我在Excel 2013中可以使用的安装加载项或命令来执行此任务。 RAND和RANDBETWEEN函数返回bigints,而不是数字(在这种情况下是字符串),所以它们可能不起作用。感谢。

3 个答案:

答案 0 :(得分:2)

您可以编写自己的功能。它不会真正随机,甚至加密安全,但它可能是有用的。类似的东西:

Function RandChars(n As Long, Optional alphabet As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") As String
    Dim chars() As String
    Dim i As Long, k As Long
    k = Len(alphabet)
    ReDim chars(1 To n)
    With Application.WorksheetFunction
        For i = 1 To n
            chars(i) = Mid(alphabet, .RandBetween(1, k), 1)
        Next i
    End With
    RandChars = Join(chars, "")
End Function

如果将其输入标准VBA代码模块并输入公式

=RandChars(10)范围内的

A1:A10您会得到类似的内容:

enter image description here

如果您需要加密安全的内容,则需要使用加密安全的PRNG替换RandBetween

答案 1 :(得分:0)

单元格中的

=ROUND(RAND(),0)随机生成0或1。在8个细胞中做到这一点。将单个8个单元格连接成一个单独的字符串。做=BIN2DEC()就可以了。这会给你一个0到255之间的随机数。=RANDBETWEEN(0,255)做同样的事情。

这对你有帮助吗?只需弄清楚你想要多少位数,然后生成要分配的randum数字。

答案 2 :(得分:0)

下面的代码用随机数填充整个电子表格。

function myFunction() {

function randnumber() {
var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
var range = sheet.getRange("A1:Z10");
for (var x = 1; x <= range.getWidth(); x++) {
for (var y = 1; y <= range.getHeight(); y++) {
  var number = Math.floor(Math.random() * 8999999999) + 1000000000;
  range.getCell(y, x).setValue(number);
    }
  }

 var sheet = SpreadsheetApp.getActive().getSheetByName("sheet1");
 var entries = [{
 name : "Numbers: 1-9",
 functionName : "numbers19"
   }];
 }