Vba 使用If语句执行Do Until,直到达到某个值
我正在处理一份大数据表。我需要代码从一个特定的单元格中减去,直到值大于某个数字。如果这个数字没有达到,我希望它变为0 例如,如果Vba 使用If语句执行Do Until,直到达到某个值,vba,excel,Vba,Excel,我正在处理一份大数据表。我需要代码从一个特定的单元格中减去,直到值大于某个数字。如果这个数字没有达到,我希望它变为0 例如,如果A3-A2>Q5,那么E3=A3-A2如果
A3-A2>Q5,那么E3=A3-A2如果
。如果这不起作用,E2=0
。我需要这个在整个A列中是连续的。到目前为止,我的代码如下:
Do Until Range("A3").Offset(1, 0) - Range("A2") > Range("Q5")
If Range("A3").Offset(1, 0) - Range("A2") > Range("Q5") Then
Range("E3").End(xlDown) = Range("A3").Offset(1, 0) - Range("A2")
Else: Range("E3").End(xlDown) = 0
End If
Loop
它似乎不喜欢我进入它的方式。我认为偏移量是不对的
在期间使用
,直到
,期间使用…是一种不好的做法。
将无条件的Do…Loop
与功能齐全的条件检查代码和Exit Do
一起使用,您可以在循环的任何位置找到它们,但不能仅在循环的开始或结束时找到它们
-1号?好的:)
msf1:提示Do…Loop语句提供了一种更结构化、更灵活的执行循环的方法
这种“服务”只针对懒惰的人。我对While
和Until
的拒绝是这句话的直接结果,正是为了实现“结构化和灵活”,而topick starter正是为了实现这一点 你为什么用.Offset
?我不知道如何使它以1的增量下降。我也试过了。结束(xldown),但似乎不起作用。我通常不编码,所以这对我来说是非常新的。你能模拟一些数据和预期的输出吗?很难理解你想要什么。我刚刚添加了一个模拟数据的链接。我希望它能帮助我解释它。你的问题与Q5
中没有任何内容有关吗?我在Q列中看到的唯一值是q4
…被否决,因为这不仅是不受支持的意见,而且助长了糟糕的逻辑纪律(如果存在定义良好的停止条件,为什么要使用Exit
)。也没有解决OP存在的问题。