Excel - Ayuda bucle do se me hace infinito

 
Vista:
sin imagen de perfil

Ayuda bucle do se me hace infinito

Publicado por Edgar (10 intervenciones) el 18/04/2017 04:41:29
Saludos. Agradezco de antes mano a quien pueda ayudarme a solucionar este problema que tengo.

Tengo una lista de datos los anexo en el .rar, lo único que busco es una coincidencia (si alguien tiene otra forma de buscar la coincidencia se lo agradezco). les dejo el código:

para comenzar el problema es cuando el valor de la lista no es el que busco si no esta entre ellos,ejemplo, 52, 53, 54 y quiero buscar la coincidencia con 51.2, entonces lo que quiero es generarlo sumando hasta que se genere el dato existente. Entonces me ocurre lo siguiente

como esta escrito a continuación funciona correctamente (pero no es el numero que quiero buscar)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim x As Double
Dim fila As Integer
MsgBox Hoja1.Range("b24")
x = 0.01
Do
For fila = 1 To 65
    If Hoja1.Cells(fila, 2) = 80 + x Then
        MsgBox "Se cumple"
        Exit Do
        Exit For
    End If
Next fila
x = x + 0.01
Loop Until x = 10

Ahora solo cambio el 80 por 50 que es el numero que me interesa y el bucle entra en infinito, es la solucion que buco de verdad no entiendo que pasa, a igual si envez de hacer 80 + x hago 80 - x entra en infinito, cosa que no entiendo ya que solo busco una coincidencia.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim x As Double
Dim fila As Integer
MsgBox Hoja1.Range("b24")
x = 0.01
Do
For fila = 1 To 65
    If Hoja1.Cells(fila, 2) = 50 + x Then
        MsgBox "Se cumple"
        Exit Do
        Exit For
    End If
Next fila
x = x + 0.01
Loop Until x = 10

Gracias a quien pueda ayudarme y repito si sabe otra forma de encontrar la coincidencia y me la hace saber se lo agradezco saludos. Dios los bediga.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 83
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Ayuda bucle do se me hace infinito

Publicado por GMG (119 intervenciones) el 18/04/2017 09:08:02
b24 tienes 80,78.

Si pones el 50, y fijas a X como máximo igual a 10 (Loop Until x = 10) : 50 +10 = 60, nunca llegará a 80,78.

Bueno, eso es en teoría, al utilizar decimales, cuando llevas muchas operaciones añade un pequeño error, es decir, en lugar de sumar
0.01 suma 0.01000000001 por ejemplo, por lo que nunca se cumplirá el if (If Hoja1.Cells(fila, 2) = 50 + x Then) ya que nunca será exacto, pero tampoco saldrá del bucle, ya que nunca X será exactamente 10.


Siguiendo la misma dinámica sería algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub CommandButton1_Click()
Dim x As Double
Dim fila As Integer
MsgBox Hoja1.Range("b24")
x = 0.01
Do
For fila = 1 To 65
    If Abs(Hoja1.Cells(fila, 2) - (50 + x)) <= 0.01 Then
        MsgBox ("Se cumple, en la fila: " & fila & " y con X = " & x)
        Exit Do
        Exit For
    End If
Next fila
x = x + 0.01
Loop Until x > 90
End Sub

Verás que en el retorno la X tiene el problema que te comentaba. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Ayuda bucle do se me hace infinito

Publicado por Edgar (10 intervenciones) el 18/04/2017 14:33:36
Muy acertada tu repuesta te agradezco por haberme quitado este dolor de cabeza, tenia días analizando porque entraba en infinito gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar