En este grupo En todos

Foro de Excel



Función BUSCARV

Carlos
Madrid, España
Escrito por Carlos Liétor Fernández
el 23/04/2007

Dentro de la sintesis de la función, estoy interesado en el valor lógico "ORDENADO"

=BUSCARV(valor_buscado;matriz_buscar_en;indicador_columnas;ordenado)

Para excel, Ordenado es un valor lógico que especifica si BUSCARV debe localizar una coincidencia exacta o aproximada, de tal modo que si se omite o es verdadero, devoloverá una coincidencia aproximada. Por defecto, esta coincidencia aproximada es el siguiente valor más alto iINFERIOR a valor_buscado, tal y como se indica en la ayuda sobre la función.

Mi pregunta es: hay alguna manera de indicar que el valor aproximado sea el siguiente valor más alto SUPERIOR a valor_buscado?.

MUCHAS GRACIAS!



Grillo Pepe Pepe
Navarra, España
Escrito por Grillo Pepe Pepe
el 23/04/2007

Prueba con esta funcion

Function Closest(val As Double, rng As Range) As Double
    Dim y As Double, x As Double, n As Double
    Application. Volatile
    y = Application.WorksheetFunction.Max(rng)
    For Each celda In rng
            x = Abs(val - celda. Value)
            If y >= x Then
                y = x
                n = celda. Value
            End If
    Next celda
    Closest = n
End Function

Escrito por Carlos Liétor Fernández
el 23/04/2007

Oye, Grillo, de verdad, muchas gracias por el trabajo impagable que realizas en este foro. No sólo porque atiendes lo más rápido que puedes, sino porque ademas tus aportaciones son siempre válidas. Y todo de forma desinteresada!

Respecto al tema que nos ocupa... Yo es que le tengo alergia al VBA, y trato de evitarlo siempre que puedo, aunque en este caso parece que no me libraré. El caso es que al introducir la función en un módulo y aplicarla, me sigue encontrando el valor mas alto INFERIOR al valor buscado, pero yo necesito el valor más alto SUPERIOR!.

Es decir, en el siguiente caso necesitaría que la función me diera 450.

LISTA NÚMERO Número inmediatamente superior 450
0 350
150
300
450
600
750
900

GRACIAS NUEVAMENTE!

Grillo Pepe Pepe
Navarra, España
Escrito por Grillo Pepe Pepe
el 23/04/2007

Prueba con esta modificación

Function Closest(val As Double, rng As Range) As Double
    Dim y As Double, x As Double, n As Double, ante As Double
    Application. Volatile
    y = Application.WorksheetFunction.Max(rng)
    For Each celda In rng
            If val = celda. Value Then
                Closest = celda. Value
                Exit Function
            End If
            x = val - celda. Value
            If x < 0 Then
                If Abs(val - celda. Value) > val - ante Then
                    Closest = celda. Value
                    Exit Function
                End If
            End If
            If y >= x Then
                y = x
                n = celda. Value
            End If
            ante = celda. Value
    Next celda
    Closest = n
End Function

Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 23/04/2007

Hiola Carlos:

Te mando una fórmula que podés usarla como el primer argumento de la función BUSCARV. 

Suponiendo que tu lista de valores está en la columna B y tu número buscado están D21.

=INDICE(B:B;COINCIDIR(D21;B:B;1)+1)

Saldría la cosa así:

=BUSCARV(INDICE(B:B;COINCIDIR(D21;B:B;1)+1);BD;2;falso)

Atte.   Willan

Escrito por Carlos Liétor Fernández
el 23/04/2007

Willian, estupenda solución la que has sugerido!.

Gracias!

Escrito por Miguel
el 26/04/2007

Buenos días,

Respecto a la función Buscarv quisiera consultar, existe alguna forma de que cuando no encuentra la coincidencia exacta, devuelva valor 0?

Muchas gracias

Miguel M


Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 26/04/2007

=SI(ESERROR(BUSCARV(E6;A:B;2;0));0;BUSCARV(E6;A:B;2;0))

Atte.   Willan

Escrito por Miguel
el 04/05/2007
Muchas gracias por su muy estimable ayuda, me solucionó muchos problemas.
Escrito por Rodrigo
el 15/05/2008

¿Que sucede si hay mas de un valor que coincide con la busqueda?

Jeisson
Bogotá, Colombia
Escrito por Jeisson
el 20/05/2008

He leido el foro y veo q todos saben mucho del tema, la pregunta les parecera estupida , pero principalmente me gustaria saber  q es la funcion buscar v , y para q sirve.

Les agradeceria su ayuda

Jeisson


Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 20/05/2008

Hola Jeisson:

 

Tu pregunta no es estúpida.   Simplemente tenés una duda o una curiosidad o a lo mejor ganas de saber más.

 

 

"Es preferible pasar un momento de tonto y no toda una vida de ignorante"

 

 

Yendo específicamente a tu consulta.   ¿Alguna vez viste que con sólo poner el código salen todos los demás datos en un programa?.   Eso lo hace la función BUSCARV.

 

Imaginate que tenés una tabla de datos, que en la primera columna ponés el número telefónico, en la segunda columna el nombre del abonado, en la tercera su dirección.

 

Preparás tu formulario con la función de marras y con solo poner el número telefónico ya tenés también los otros datos de tu agenda telefónica.

 

¿Te gustó la utilidad de esa función?


Xnarutox
Santa Cruz, Argentina
Escrito por Xnarutox
el 15/08/2008

Hola tengo un problemon y nose como solucionarlo.. Paso a explicar

Tengo una tabla en una hoja q posee una lista de equipos y su "disponibilidad" por mes.

Lista de equipos en columna C, y en colum D hasta la O la D los valores q registra cada equipo en ese mes.

                    enero          febrero         marzo       etc

71698         0,95                0,97             0,99

71699           0,87              0,79               ,091

71700          0,90                0,91              ,098

71701          0,99                  1                      1


Lo q yo intento hacer es una hoja donde: Al especificar en una celda un numero de equipo y el ems.. Me devuelva la disponibilidad de ese mes.

Ojala alguien pueda orientarme..


Desde ya mcuhas gracias..


Saludos

Willan Villamil Salcedo
Curso de baterias: acumuladores eléctr...
Escrito por Willan Villamil Salcedo
el 15/08/2008

Hola xnarutox:


Lo ideal hubiera sido que iniciés un nuevo post, para tu pregunta... En fin...

Vamos a suponer que tus datos están en el rango c1:o25

En la celda a1 ponés el nombre de cualquier mes

En la celda a2 ponés cualquier código


En la celda a4 ponés la siguiente fórmula:


=INDICE(C:O;COINCIDIR(A2;C:C;0);COINCIDIR(A1;C1:O1;0))

Adoney Inostroza
Santiago, Chile
Escrito por Adoney Inostroza
el 22/07/2010

Hola tengo un problema lo que pasa es que hago la funcion de buscarv y le digo que me lleve el numero que aparece en la columna A y me lleva el valolr mas alto de esa columna y yo necesito que me envie el valor de la columna por ejemplo tengo el numero 11581900 y ese numero tieen asociado en la columna A el numero 30 pero me trae el numero 33 y no se por que.

Gracias por su ayuda

PD: Mi excel se encuentra en ingles por lo que la funcios se llama VLOOKUP



Cacho Rodríguez
Ing. electrónica u.n.r.
Escrito por Cacho Rodríguez
el 22/07/2010

Hola! Adoney
Te comento que tu dificultad no coincide -exactamente- con lo analizado en este debate.

Te sugiero que inicies un nuevo y propio debate mediante el enlace:

--> Crear nuevo debate


Asimismo, será conveniente que subas al Foro una muestra de tu libro, mediante el enlace:

--> Subir un documento

Así será más sencillo darte una mano.
Saludos, Cacho.