Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用If语句执行Do Until,直到达到某个值_Vba_Excel - Fatal编程技术网

Vba 使用If语句执行Do Until,直到达到某个值

Vba 使用If语句执行Do Until,直到达到某个值,vba,excel,Vba,Excel,我正在处理一份大数据表。我需要代码从一个特定的单元格中减去,直到值大于某个数字。如果这个数字没有达到,我希望它变为0 例如,如果A3-A2>Q5,那么E3=A3-A2如果

我正在处理一份大数据表。我需要代码从一个特定的单元格中减去,直到值大于某个数字。如果这个数字没有达到,我希望它变为0

例如,如果
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存在的问题。