VBA – Excel随机公式没有使用相同的数字随后

我创build了下面的代码,它在技术上是应该的。 它把所有使用的行的列C中从1到3的随机数从84开始减less。 由于它只限于3个值,所以我经常会连续得到相同的数字。 有没有办法来防止这种情况发生? 所以如果C84最终成为“2”,C85必须是“1”还是“3”?

Sub RandomNumbers() Application.ScreenUpdating = False Range("C84") = "=RANDBETWEEN(1,3)" Dim LastRow As Integer LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Range("C84:C" & LastRow) = "=RANDBETWEEN(1,3)" End Sub 

假设我们要随机生成1到3之间的一列值,而没有连续的重复。

没有VBA:

A1中input:

 =RANDBETWEEN(1,3) 

A2中input:

 =IF(A1=1,RANDBETWEEN(2,3),IF(A1=3,RANDBETWEEN(1,2),IF(RAND()<0.5,1,3))) 

并抄下来:

在这里输入图像说明

如果您确实需要VBA,则可以使用VBA粘贴公式。

下面的循环如何?

 Sub RandomNumbers() Dim LastRow As Long LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For i = 84 To LastRow ActiveSheet.Range("C" & i).Value = Application.WorksheetFunction.RandBetween(1, 3) Do Until ActiveSheet.Range("C" & i).Value <> ActiveSheet.Range("C" & i - 1).Value ActiveSheet.Range("C" & i).Value = Application.WorksheetFunction.RandBetween(1, 3) Loop Next i End Sub