如何在新单元格中生成随机数

时间:2017-02-24 22:17:38

标签: excel vba excel-vba

所以我想在1-13之间生成随机数。我有一个随机数生成单元格A1,但我想偏移一行,在单元格A2中放一个随机数,依此类推。

到目前为止,这是我的工作:

Sub randomnumb()
    Dim random_number As Integer
    Randomize
    random_number = Int(13 * Rnd) + 1  
    Cells(1, 1) = random_number
End Sub

能够做到这一点。我希望随机数在10次后停止生成。我认为“Do Until”方法可行但不确定如何操作。

所以在玩完之后我想出了如何让下一个单元生成一个随机数。我现在想要在列B和C生成从单元格B2和C2开始的随机数的位置。到目前为止,这是我的工作:

Sub randomnumb()

    Dim IntCardOne As Integer

    Randomize

    IntCardOne = Int(13 * Rnd) + 1
    ActiveCell.Value = IntCardOne
    ActiveCell.Offset(1, 0).Select
End Sub

好。所以到目前为止我已经做到了这一点。

Sub test()

    Dim IntHand1 As Integer
    Dim IntHand2 As Integer

    Randomize
     For IntHand1 = 1 To 10
        Cells(IntHand1, 2) = Int(13 * Rnd) + 1
    Next



    Randomize
    For IntHand2 = 1 To 10
        Cells(IntHand2, 3) = Int(13 * Rnd) + 1
    Next IntHand2


End Sub

最终目标是尝试从纸牌游戏中制作一款名为“战争”的游戏。 当然,它们很快就会产生。是否有停止功能或方法来阻止程序在最后运行代码?我还希望将所有内容都按行排列,我可以为每列添加标题。然后我想尝试输入一个记录分数的If then语句。

然后希望在十轮之后我可以打印一个说明获胜者的消息框。

好的,我完成了我想要的程序。我可能已经说过我之前想做的事情,但无论如何我会重复一遍。我正在努力制作一款名为“战争”的纸牌游戏。电子表格必须打印数字,当用户达到10分时,他将获胜并且电子表格将停止打印数字。我想感谢你的帮助。你提供给我的随机数生成器是一个很好的开始。教授给了我19/20。

1 个答案:

答案 0 :(得分:3)

当您在开始循环之前知道需要多少循环时,通常最容易使用For循环。

Sub RandomNumber()
    Dim i as Integer
    For i = 1 to 10
        Cells(i,1) = WorksheetFunction.Randbetween(1,13)
    Next i
End Sub

如果您真的想使用RndRandomize,就可以这样做

Sub RandomNumber()
    Dim i as Integer
    Randomize
    For i = 1 to 10
        Cells(i,1) = Int(13 * Rnd) + 1
    Next i
End Sub

<强>更新

一次一个号码

Sub RandomNumber2()
    Dim lastCell As Range

    'do a ctrl+up from the bottom of column A
    With ThisWorkbook.Worksheets("Sheet1")
        Set lastCell = .Cells(.Rows.Count, 1).End(xlUp)
    End With

    'move one row down (except for when you have nothing in column A)
    If lastCell.Value <> vbNullString Then
        Set lastCell = lastCell.Offset(1, 0)
    End If

    'place random number in this cell
    lastCell.Value = Application.WorksheetFunction.RandBetween(1, 13)
End Sub