在VBA中复制上一次For循环迭代中的值

在VBA中复制上一次For循环迭代中的值,vba,for-loop,Vba,For Loop,希望这个问题以前没人问过或者太愚蠢了 我正在尝试做一个我认为相对简单的VBA任务,遍历一个矩阵并根据在其他列中可以找到的值填写一列。如果不符合特定的标准,我想复制上一行的值 这就是我认为有效的方法: For i = 1 To n If a(3, i) = 1 Then a(5, i) = 1 ElseIf a(2, i) = 9 Then a(5, i) = 0 Else a(5, i) = a(5, i - 1) End If Nex

希望这个问题以前没人问过或者太愚蠢了

我正在尝试做一个我认为相对简单的VBA任务,遍历一个矩阵并根据在其他列中可以找到的值填写一列。如果不符合特定的标准,我想复制上一行的值

这就是我认为有效的方法:

For i = 1 To n
   If a(3, i) = 1 Then
      a(5, i) = 1
   ElseIf a(2, i) = 9 Then
      a(5, i) = 0
   Else
      a(5, i) = a(5, i - 1)
   End If
Next i
但是,1不会继续,1之后的单元格变为0,尽管不满足0条件。有什么建议吗

编辑: 这是它的一部分没有做我想要的,在最后两行中,第二个条件不是fullfilled,但是第五列仍然是0。我希望宏从上述单元格复制1,直到满足第二个条件

试试这个:

For i = 1 To n
   If a(i, 3) = 1 Then 'if row i column 3
      a(i, 5) = 1
   ElseIf a(i, 2) = 9 Then 'elseif row i column 2
      a(i, 5) = 0
   Else 'else which will only trigger if none of the ones before trigger
      a(i, 5) = a(i - 1, 5)
   End If
Next i

请给出一个矩阵数据(之前)和期望矩阵数据结果(之后)的示例?您告诉宏检查第3行和第
i
列是否等于1,然后检查第5行和第
i
列是否等于1。如果第2行和第i列
i
等于9,则第5行和第i列
i
等于0。其他的第5行列
i
等于第5行列
i-1
。对于excel及其数组
a(x,y)
表示
x=row
y=column
。我在原始帖子中发布了矩阵的一个片段,希望你明白我的意思。谢谢Damian,我不知道,但如果我没有遗漏一些不应该影响发布代码功能的内容,除非我遗漏了一些内容。@erikdansle19您正在循环矩阵中的所有列,在相同的“单元格”上反复更改,所以您需要更改代码以循环所有行。谢谢。我更改了代码以正确输入行和列,但遗憾的是,它没有改变结果,出于某种原因,它仍然没有从上面的行复制值。@erikdansle19如果列3 1和列9,它将只从上面的行复制值。如果其中一个为真,它将永远不会复制上面一行中的一个。在矩阵中,所有行在第3列中都有1。因此,它将永远不会跳转到
否则
,如果,它将在第一个
时停止。检查
If
是如何工作的。不是在最后两行,这让我很困惑,没有一个条件得到满足,但我在第5列中仍然得到0:s。@erikdansle19然后您可以尝试一步一步地调试,并检查显示的值。。。这是唯一的办法。