Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Excel 用于函数不同输入的循环然后在特定值处停止_Excel_Vba_For Loop_Input_While Loop - Fatal编程技术网

Excel 用于函数不同输入的循环然后在特定值处停止

Excel 用于函数不同输入的循环然后在特定值处停止,excel,vba,for-loop,input,while-loop,Excel,Vba,For Loop,Input,While Loop,您好,我正在尝试编写一些VBA代码,以便我的一段输入数据“G”的大小发生变化,从而使excel文件(4个单元格)中的相应方程式使用G进行迭代,直到达到某个数字。。。说1。然后给出结果为1的G 到目前为止,我的代码看起来像: Sub For_loop() Dim x As Single For x = 1 To 10 Step 0.1 ... End Sub 如果你这样做,你会遇到麻烦 Sub For_loop() Dim x As Single

您好,我正在尝试编写一些VBA代码,以便我的一段输入数据“G”的大小发生变化,从而使excel文件(4个单元格)中的相应方程式使用G进行迭代,直到达到某个数字。。。说1。然后给出结果为1的G

到目前为止,我的代码看起来像:

Sub For_loop()
Dim x As Single

    For x = 1 To 10 Step 0.1
        ...
    
End Sub
如果你这样做,你会遇到麻烦

Sub For_loop()
    Dim x As Single

    For x = 1 To 10 Step 0.1
        Debug.Print x
    Next x
End Sub
输出将如下所示:

 1 
 1,1 
 1,2 
 1,3 
 1,4 
 1,5 
 1,6 
 1,7 
 1,8 
 1,9 
 2 
 2,1 
 2,2 
 2,3 
 2,4 
 2,5 
 2,6 
 2,7 
 2,799999 
 2,899999 
 2,999999 
 3,099999 
 3,199999 
 3,299999 
 3,399999 
 3,499999 
 3,599999 
 3,699999 
 3,799999 
 3,899998 
 3,999998 
 4,099998 
 4,199998
 …
这不是一个错误,而是因为计算机计算数字而不是绝对值(就像任何计算器一样)。有一定的精确性,但结果总是非常接近事实,但并不精确

保持循环增加整数而不是小数,并将
x
设置为
10

Sub For_loop2()
    Dim x As Long

    For x = 10 To 100 Step 1
        Debug.Print x / 10
    Next x
End Sub
为了得到更精确的结果

 1 
 1,1 
 1,2 
 1,3 
 1,4 
 1,5 
 1,6 
 1,7 
 1,8 
 1,9 
 2 
 2,1 
 2,2 
 2,3 
 2,4 
 2,5 
 2,6 
 2,7 
 2,8 
 2,9 
 3 
 3,1 
 3,2 
 3,3 
 3,4 
 3,5 
 3,6 
 3,7 
 3,8 
 3,9 
 4 
 4,1 
 4,2 
 …

关于这方面的更多信息:

你能重新表述一下你的问题吗?它有点不清楚。“G”应该是返回值吗?如果它返回1,您想知道迭代器当时的值是多少吗?好的,非常感谢!这会适当地改变它,但是当这个输入影响的方程达到某个数字(比如1)时,我如何选择这个变化来停止。把这个数字报告给我哪个方程?请用实例数据给出一个具体的例子。您可以将其编辑为原始问题。我想你可能应该用google for excel solver:看起来你可以用它来代替自己写东西。我有一个很大的excel文件,里面有很多数据和一些函数,这些函数根据这些数据给出输出。本质上,我想像上面一样改变输入中的1,直到其中一个函数的相应输出达到数字1。然后当它达到1时,告诉我输入数据的限制是什么,使其为1。不幸的是,如果不发送我的全部文档,共享方程式将非常困难。再次,请编辑您的原始问题,并在最后给出一个确切的示例(请参阅)。如果不知道您正在做什么,则无法回答该问题。你提供的信息是一种降低成本的方法。另外,请检查解决(上面的链接)是否解决了您的问题。你也可以把方程式复制到你的问题中。我想解算器是适合你的工具。