Vba 尝试创建宏以执行100次迭代,并将结果值(2个相邻行单元格)粘贴到2 x 100数组

Vba 尝试创建宏以执行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

我有一个工作表,在计算中使用随机生成的数字在两个相邻的单元格(比如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 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分。