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

#1 J.P.
31/01/2007 - 20:44 | Informe spam
Buenas Tardes sin visual seria algo asi:
Introduce en la celda B1 la siguiente formula:

=SI(A1";"Ese es";SI(A1<22;"muy chiquis";"muy alto"))


On 31 ene, 12:19, wrote:
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
Respuesta Responder a este mensaje
#2 rgg27
01/02/2007 - 11:13 | Informe spam
Gracias, pero no es esto lo que estoy buscando.

Para que se comprenda mejor lo que busco, voy a introducir una celda
más, la F1, aparte de las dos celdas A1 y B1 de la pregunta inicial.

En F1 se anota el objetivo a buscar. En este ejemplo el nº 22
En B1 habrá una fórmula que no varía: ¡-F1
A1 será el resultado a buscar, que está claro que cuando sea 22, en
este caso B1 es cero.

Se trata entonces de buscar el valor de A1 que haga que B1 sea cero (o
el valor absoluto menor que 0.001). En este momento en A1 (resultado)
es igual al valor buscado que se ha escrito en F1.

No creo que sea muy complicado. Bueno, para los expertos.
Respuesta Responder a este mensaje
#3 rgg27
01/02/2007 - 11:16 | Informe spam
Perdón, se me olvidaba. Todo esto se debería hacer pulsando un botón
con un código VBA asociado.
Respuesta Responder a este mensaje
#4 J.P.
01/02/2007 - 15:02 | Informe spam
Buenos Dás
Revisa este codigo
'En la hoja donde tienes los valores
Private Sub Worksheet_Change(ByVal Target As Range)
u = u + 1
If u = 1 Then
patata
Else
u = 0
End If
End Sub

'En un modulo
Public u As Integer
Sub patata()
Cells(1, 2) = Cells(1, 1) - Cells(1, 6)
If Cells(1, 2) <= 0.001 And Cells(1, 2) >= -0.001 Then
MsgBox "FELICIDADES EL NÚMERO ES CORRECTO"
End If
End Sub

'OTRA FORMA, ME PARECE MEJOR PUES INTRODUCES EL NUMERO Y NO SE VE EN
LA HOJA
1.
Pones un boton en la hoja1, busca en la barra visual basic, el boton
controles de hay seleccionas el boton
2.
'En el editor de visual en la hoja1 pones:
Private Sub CommandButton1_Click()
numero
End Sub

Private Sub Worksheet_Activate()
p = False
End Sub

'3.
En un modulo colocas
Public a As Integer
Public p As Boolean
Sub numero()
a = InputBox("Cual su número adivinar", "PATATA")
p = True
patata
End Sub
Sub patata()
If p = True Then
Cells(1, 2) = Cells(1, 1) - a
If Cells(1, 2) <= 0.001 And Cells(1, 2) >= -0.001 Then
p = False
MsgBox "FELICIDADES EL NÚMERO ES CORRECTO"
If MsgBox("DESEA JUGAR DE NUEVO", vbYesNo, "NUEVO") = 6 Then
numero
End If
End If
End If
End Sub




On 1 feb, 05:16, wrote:
Perdón, se me olvidaba. Todo esto se debería hacer pulsando un botón
con un código VBA asociado.
Respuesta Responder a este mensaje
#5 J.P.
01/02/2007 - 15:06 | Informe spam
Hay un pequeño error en la siguiente macro

Sub numero()
a = InputBox("Cual su número adivinar", "PATATA")
p = True
patata
End Sub

al darle cancelar te dara error, para evitarlo introduce esta linea
despues del
Sub numero()
On Error Resume Next

'...y listo

On 1 feb, 05:16, wrote:
Perdón, se me olvidaba. Todo esto se debería hacer pulsando un botón
con un código VBA asociado.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida