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

所以我想在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语句logging下来。

那么希望十轮后我可以打印一个消息框,说明胜利者。

好吧,我完成了我想要制作的节目。 我可能已经说过了我以前想做的事情,但我会重复它。 我正在试图制作一个名为“战争”的纸牌游戏。 电子表格必须打印数字,当用户达到10分时,他会赢,电子表格将停止打印数字。 我想感谢你的帮助。 你提供给我的随机数发生器是一个好的开始。 教授给了我一个19/20。

在开始循环之前,如果知道需要多less循环,通常最容易使用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