Buscar un valor (la patata caliente)

31/01/2007 - 18:19 por rgg27 | Informe spam
Necesito el código VBA que haga lo del concurso de la patata
caliente : adivinar un dato que te pide alguien y esta persona solo te
dice si es mayor o menor.

En A1 se anotará el número entre 1 y 100 que haga que B1 sea igual a
cero. B1 entonces se comporta como la persona que te dice si es mayor
a menor.

Aunque esto da igual para el código, en B1 hay una fórmula que depende
de A1. De manera que solo hay un valor de A1 que hace que B1 sea cero.
Y se trata de buscar eses valor de A1.

Ejemplo:
Supongamos que queremos adivinar el nº de jugadores que hay en un
campo de fútbol (22). Podríamos comenzar anotando 100 en la casilla
A1. Vemos el dato que aparece en B1 que será mayor que cero, por lo
tanto sabemos que el dato buscado es menor que cien. Ahora anotamos
cero en A1, y veremos que B1 es negativo, luego el valor buscado es
mayor...
Sería algo así:

Valor de A1Valor mostrado en B1
100-->0
0--<0
50 >0
25 >0
12,5--<0
18,75<0
21,875-<0
23,4375-->0
22,65625--0

Si el valor que se busca es entero, aquí se pararía dejando escrito
este valor de 22 en A1.
En mi caso la exactitud que busco es de dos decimales, por lo que
pienso que lo que se busca en B1, mas que si es mayor o menor que
cero, es si el valor absoluto de B1 es menor o mayor que 0,01

Preguntas similare

Leer las respuestas

#6 rgg27
01/02/2007 - 18:31 | Informe spam
Muchas gracias por la solución.

Me han dejado esta que funciona:

Private Sub CommandButton1_Click()
Dim inferior As Double
Dim resultado As Double
Dim superior As Double

inferior = 0
resultado = 50
superior = 100


Do While (Abs(Range("K10").Value) >= 0.001)
If Range("B1").Value > 0 Then
superior = resultado
resultado = (resultado + inferior) / 2
Else
inferior = resultado
resultado = (resultado + superior) / 2
End If
Range("A1").Value = resultado
Loop

Range("A1").Value = resultado

End Sub

Donde 0 y 100 son los valores extremos entre los que estará
comprendido el nº que se busca.


De todas formas, J.P., probaré la solución que me propones a ver con
cual me quedo.

Muchísimas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida