在VBA中复制上一次For循环迭代中的值
希望这个问题以前没人问过或者太愚蠢了 我正在尝试做一个我认为相对简单的VBA任务,遍历一个矩阵并根据在其他列中可以找到的值填写一列。如果不符合特定的标准,我想复制上一行的值 这就是我认为有效的方法:在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
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然后您可以尝试一步一步地调试,并检查显示的值。。。这是唯一的办法。