Vba 尝试创建宏以执行100次迭代,并将结果值(2个相邻行单元格)粘贴到2 x 100数组
我有一个工作表,在计算中使用随机生成的数字在两个相邻的单元格(比如A1和A2)中生成结果。我正在尝试执行100次迭代,其中我只是在工作表上“计算公式”,然后尝试将每次迭代的结果存储在A1和A2旁边(因此迭代1将在B1和B2中,迭代100将在CW1和CW2中)。提前感谢你的帮助。如果有必要,请使用Excel 2010Vba 尝试创建宏以执行100次迭代,并将结果值(2个相邻行单元格)粘贴到2 x 100数组,vba,excel,Vba,Excel,我有一个工作表,在计算中使用随机生成的数字在两个相邻的单元格(比如A1和A2)中生成结果。我正在尝试执行100次迭代,其中我只是在工作表上“计算公式”,然后尝试将每次迭代的结果存储在A1和A2旁边(因此迭代1将在B1和B2中,迭代100将在CW1和CW2中)。提前感谢你的帮助。如果有必要,请使用Excel 2010 Dim Iteration As Integer, i As Integer Dim val As Variant Iteration = 100 For i = 1 To Ite
Dim Iteration As Integer, i As Integer
Dim val As Variant
Iteration = 100
For i = 1 To Iteration
Calculate
Range("A1:A2").Select
Selection.Copy
Range("B" & Rows.Count).End(x1Up).Offset(0, 1).PasteSpecial
Paste:=xlPasteValues
Next i
End Sub
我认为您的主要问题在于为目标地址选择的位置-在B列中查找最后一个未使用的单元格,然后切换到一列(即到C列)并粘贴第一组结果。然后,在第二组结果中使用相同的位置,等等
Sub Test()
Dim Iteration As Integer, i As Integer
Dim val As Variant
Iteration = 100
'Use a "With" block so that it can be easily changed in the future
'to refer to a specific sheet if needed
With ActiveSheet
For i = 1 To Iteration
Calculate
'Determine the last used column on row 1,
' offset 1 column to the right,
' resize to refer to 2 rows,
' set values to the values in A1:A2
.Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(2, 1).Value = .Range("A1:A2").Value
Next i
End With
End Sub
正如Steve Lovell所指出的,您的原始代码中也有一个输入错误。将
选项Explicit
作为每个代码模块的第一行是一个好习惯。这将迫使您声明您使用的所有变量,编译器将突出显示x1Up
,并给出一个“Variable not defined”错误。如果您将当前代码粘贴到问题中,我们可能会找出它不起作用的原因。如果没有代码,我们都会胡乱猜测为什么你的尝试不起作用。是的,我想这可能会有帮助。这是我写的第一个宏。。。我买了一本书,也搜索了这个论坛,发现了一个与我的问题类似的帖子,但是当我试图合并这个帖子的代码时,我得到了一个错误。现在我将把它添加到我的原始帖子中。这段代码有几个问题,但目前来看,它会出错,因为您没有XLUP
,而是X1UP
。容易混淆的是一些字体,这就是为什么我把它们放在大写的原因。如果还没有,您的粘贴:=xlPasteValues
需要与前面的位在同一行。@SteveLovell Good eyes!!我注意到缺少的(并假设将代码粘贴到问题中是一个错误),但完全忽略了1
。该代码是否应该通过简单的复制和粘贴工作?以“.Range…”开头的行以黄色突出显示,代码不起作用。@crapon01我注意到我最初写的是Range
,当我打算写单元格时。我大约在14分钟前更新了代码,但您可能在我更改代码之前复制了它。请尝试再次复制(或将不正确的.Range(1、.Columns.Count)
更改为.Cells(1、.Columns.Count)
)。此框告诉我避免使用类似“谢谢”的注释,但谢谢!我能帮你提高分数吗?我单击了向上箭头,但显然我太新手了。@crapon01您将无法作为新用户对答案进行向上投票,但您应该能够单击答案左侧的“勾选”。(这也会为你赢得一些声誉——我认为你“接受”一个问题会得到2分。)我也会得到+1分。