【发布时间】:2013-12-31 16:01:03
【问题描述】:
关于 Excel 中的 VBA 的快速且我认为相对简单的问题。我正在编写我的第一个嵌套循环,并且遇到了第二个增量覆盖第一个增量的问题。代码如下:
Sub RandNumRang()
Dim i As Integer, Row As Integer, Col As Integer
Dim j As Integer
Dim LastRow As Long
Dim NoRows As Integer
Dim MinNum As Double, MaxNum As Double
Dim NumFormula As String
Col = 1 'Write random numbers on Column A
'Get the range and number of random values needed
For j = 3 To 4
NoRows = ActiveSheet.Range("G" & j).Value 'No of random values needed
MinNum = ActiveSheet.Range("E" & j).Value 'Min Range
MaxNum = ActiveSheet.Range("F" & j).Value 'Max Range
NumFormula = "=RANDBETWEEN(" & MinNum & "," & MaxNum & ")" 'Generate between Range
i = 0
For Row = 2 To NoRows + 1
i = i + 1
ActiveSheet.Cells(Row, Col).Value = i 'ID
ActiveSheet.Cells(Row, Col + 1).Formula = NumFormula 'Random Value
ActiveSheet.Cells(Row, Col + 2).FormulaR1C1 = "=TIME(0,0,RC[-1])" 'Convert to time
Next Row
Next j
End Sub
我正在尝试生成一组随机时间间隔。除了我的值被覆盖之外,代码完全符合我的要求。 j 循环最终将有超过 2 个增量,但无论如何此代码都会有相同的覆盖问题。我很确定这与我指定有关
For Row=2 To NoRows + 1
作为嵌套循环的起点,但这是我第一次运行 VBA 脚本,我想我会伸出援手,因为我尝试的每个修复都失败了。提前致谢,如果您需要更多详细信息,请告诉我。
另外,我附上了一张工作表的截图供参考:
【问题讨论】:
-
在你的例子中,你是说你想要基于 min = 1 和 max = 40 的 30 个随机时间,然后基于 min = 41 和 max = 80 的另外 25 个随机时间?所以你应该在 A 列中有 55 个
ID值? -
正确。请注意,目前前 25 个“ID”的值介于 41-80 之间,而后 5 个的值介于 1-40 之间。这是发生覆盖的地方。