Buscarv pero que traiga el el mayor valor

28/11/2005 - 16:59 por Bart | Informe spam
Hola grupo:

Problema: Debo traer el valor exacto o en su defecto el mayor valor de una
tabla que viene ordenada en forma ascendente.

Por lo tanto la función coincidir no sirve porque la tabla debe venir
ordenada en forma descendente y el buscarv me trae el menor valor.

Porfa, como puedo solucionar mi busqueda.

Gracias,

F.V.

Preguntas similare

Leer las respuestas

#6 Isrrael
28/11/2005 - 22:30 | Informe spam
Quizás tengas razón, pero entiendo que el en su primer post nos dice que
quiere el valor exacto o en su defecto, el valor máximo, entonces, según
entiendo quedaría algo como esto:

=IF(VLOOKUP(C1,$A$1:$A$5,1,0)=MAX($A$1:$A$5),MAX($A$1:$A$5),VLOOKUP(C1,$A$1:$A$5,1,0))

En donde la verdadero devuelve el valor máximo y falso el valor exacto...,
eso creo, pero bueno, es tan sólo una sugerencia,
Saludos!!
Isrrael
"KL" wrote in message
news:%
Hola Isrrael,

Seguramente Bart nos lo aclarara, pero yo habia entendido que se buscaba
el mayor de los dos valores del rango en que cae el valor buscado y no el
valor maximo de toda la matriz.

Saludos,
KL


"Isrrael" wrote in message
news:uQWCo$
O también, además de las que comenta KL:

=IF(O4=MAX($O$4:$O$26),O4,"")
Donde O4 puede ser, A1, etc y simplemente copias la formula hacia abajo.

o algo más rebuscado:

=IF(VLOOKUP(C1,$A$1:$A$5,1,0)=MAX($A$1:$A$5),C1,"No es el valor máximo")

Saludos!
"Bart" wrote in message
news:
Gracias Miguel por tu sugerencia:

La idea es utilizar la función BucarV/H con la opción Verdadero, pero
que
tome el mayor valor en caso de no coincidencia en lugar del menor cono
lo
hace.

Saludos,








Respuesta Responder a este mensaje
#7 Bart
29/11/2005 - 00:16 | Informe spam
Gracias a todos por sus amables respuestas.

Los datos del problema son los siguientes:

A B
0.1 1
0.3 2
0.4 3

Para el valor 0.35 si utilizo la función buscarv(0.35,A1:B3,2,verdadero)
trae 2, pero necesita que tome el siguiente mayor, es decir, 3.

Después de cacharear un rato hice lo siguiente en VBA, por si a alguno le
interesa y parece que funciona:

Function BuscarX(ByVal Llave As Double, ByVal Busq As Range, ByVal col As
Integer) As Double
Dim VectorFila As Range
Dim i As Integer

Set VectorFila = Busq.Resize(1)

i = 0
For Each VectorFila In VectorFila.Cells
If Llave <= VectorFila.Cells Then Exit For
i = i + 1
Next

BuscarX = VectorFila.Offset(col - 1, 0) 'Equivalente al BuscarH

End Function


Saludos y gracias nuevamente,

Bart
Respuesta Responder a este mensaje
#8 KL
29/11/2005 - 00:46 | Informe spam
Hola Bart,

Tu mismo, solo decirte que la solucion por medio de una UDF (funcion VBA
definida por usuario) es la menos optima por varias razones:
1) velocidad
2) uso de memoria
3) posisbilidad de error
4) portabilidad
5) seguridad/derechos de usuario

Por cierto, ?Cual es el problema con mi solucion por formulas?

Saludos,
KL

"Bart" wrote in message
news:
Gracias a todos por sus amables respuestas.

Los datos del problema son los siguientes:

A B
0.1 1
0.3 2
0.4 3

Para el valor 0.35 si utilizo la funcion buscarv(0.35,A1:B3,2,verdadero)
trae 2, pero necesita que tome el siguiente mayor, es decir, 3.

Despues de cacharear un rato hice lo siguiente en VBA, por si a alguno le
interesa y parece que funciona:

Function BuscarX(ByVal Llave As Double, ByVal Busq As Range, ByVal col As
Integer) As Double
Dim VectorFila As Range
Dim i As Integer

Set VectorFila = Busq.Resize(1)

i = 0
For Each VectorFila In VectorFila.Cells
If Llave <= VectorFila.Cells Then Exit For
i = i + 1
Next

BuscarX = VectorFila.Offset(col - 1, 0) 'Equivalente al BuscarH

End Function


Saludos y gracias nuevamente,

Bart
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida