Excel VBA:当迭代开始产生与上次迭代相同的结果时,如何停止迭代?
例如下面的代码Excel VBA:当迭代开始产生与上次迭代相同的结果时,如何停止迭代?,excel,vba,Excel,Vba,例如下面的代码 For i = 0 to 40 R = R & "," & Application.WorksheetFunction.Min((Cell.Value + i * 5/8), 0.8) Next i 当R开始产生与上一次迭代相同的结果时,我如何停止它(例如,I=11和I=12产生相同的结果..) 我试过类似的东西 如果i=i-1则 退出 End If 但是VBA无法读取它一种方法是在对当前迭代的变量执行操作之前,添加另一个存储上一次迭代结果的变
For i = 0 to 40
R = R & "," & Application.WorksheetFunction.Min((Cell.Value + i * 5/8), 0.8)
Next i
当R开始产生与上一次迭代相同的结果时,我如何停止它(例如,I=11和I=12产生相同的结果..)
我试过类似的东西
如果i=i-1
则
退出
End If
但是VBA无法读取它一种方法是在对当前迭代的变量执行操作之前,添加另一个存储上一次迭代结果的变量。然后比较它们,如果它们匹配就退出循环
For i = 0 to 40
Rprev = R
R = R & "," & Application.WorksheetFunction.Min((Cell.Value + j * 5/8), 0.8)
If R = Rprev Then
Exit For
End If
Next i
您需要将以前的结果存储在某个变量中,然后将其与当前结果进行比较,如果相等,则退出
Dim previousResult as Double
Dim thisResult as Double
For i = 0 to 40
previousResult = thisResult
thisResult = Application.WorksheetFunction.Min((Cell.Value + i * 5/8), 0.8)
If previousResult = thisResult Then Exit For
R = R & "," & thisResult
Next
您需要将以前的结果存储在某个变量中,然后将其与当前结果进行比较,如果相等,则退出。您没有提供足够的上下文/代码来真正提供完整的解决方案
i
甚至没有在这里的代码中使用,因此不清楚不同的i
值如何产生不同的结果(例如,从Min
函数?)。哦,它实际上是i
而不是公式中的j
,这几乎肯定是不正确的,由于R
是一个串联字符串,随着每次迭代而增长,因此如果R=Rprev,则设置Rprev=R
将永远不会满足后面的条件,因为R
在进行比较之前会发生变化。你是对的,没有想到这一点。当前迭代R将始终至少添加一个“,”,谢谢。我想知道Cell.values是否是一行数字而不是单个单元格。这是怎么回事?