ayuda sobre funciones de busqueda

12/12/2003 - 05:06 por ayuda sobre funciones de busqueda. | Informe spam
funcion buscar v
me estoy volviendo loca con una funcion buscar v ;donde coloco todos los datos correctos para realizarla,pero si coloco como argumento ordenado falso me devulve el error de N//A,y cuando coloco el argumento verdadero me devuelve un valor aproximado.(no el correcto)
alguien me podria ayudar mediante quizas otras formulas p/buscar un valor y que me aparezca en la celda correspondiente
Desde ya muchisimas gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
12/12/2003 - 08:11 | Informe spam
hola :)

... funcion buscarv ... argumento ordenado falso me devulve el error de N//A
... argumento verdadero me devuelve un valor aproximado.(no el correcto) [...]



con el argumento 'ordenado', le 'indicamos' a excel que 'debe encontrar' el valor_buscado con una 'coincidencia'...
- si 'falso', la coincidencia debera ser EXACTA... si no 'se encuentra'... 'devuelve' el valor de error '#N/A' :((
- si 'verdadero' [u 'omitido'], 'devuelve' la coincidencia 'exacta' [si 'se encuentra'] o la 'inmediata anterior' <=
si tus datos en la matriz estan 'ordenados', el argumento NO es 'necesario'
[ya sabes lo que 'devolvera', dependiendo de si lo encuentra o no]

si tus datos en la matriz NO estan 'ordenados', y existe el 'riesgo' de que el dato 'buscado' NO 'exista'...
podrias [es 'necesario'] 'anticipar' el error [p.e.] mediante una funcion 'si' [condicional] como...
=Si(EsError(BuscarV(D3,A1:B6,2,Falso)),"No existe",BuscarV(D3,A1:B6,2,Falso))
[toma nota que 'mi' separador de argumentos es la coma ',' NO punto y coma ';']

saludos,
hector.
Respuesta Responder a este mensaje
#2 Daniel.M
12/12/2003 - 16:50 | Informe spam
Por el OP,

> ... funcion buscarv ... argumento ordenado falso me devulve el error de N//A
> ... argumento verdadero me devuelve un valor aproximado.(no el correcto)


[...]

con el argumento 'ordenado', le 'indicamos' a excel que 'debe encontrar' el


valor_buscado con una 'coincidencia'...
- si 'falso', la coincidencia debera ser EXACTA... si no 'se encuentra'...


'devuelve' el valor de error '#N/A' :((
- si 'verdadero' [u 'omitido'], 'devuelve' la coincidencia 'exacta' [si 'se


encuentra'] o la 'inmediata anterior' <=
Yo podria añadir con una formula:

=SI(ESERROR(COINCIDIR(D3,A1:A6,1)),"No
existe",SI(INDICE(A1:A6,COINCIDIR(D3,A1:A6,1))Ó,INDICE(B1:B6,COINCIDIR(D3,A1:A
6,1)),"No existe"))

Puede notar que 3 búsquedas binarias se resolven MUCHO mas rapidemente que UNA
búsqueda secuencial.

Y prefiero combinacion INDICE(COINCIDIR()) en lugar de BuscarV() porque:
1. no introducie una dependencia entre las columnas. Si el OP cambia el
lugar de B1:B6 a C1:C6, la formula va seguir a funcionar;
2. COINCIDIR puede buscar en une lista en orden creciente o decreciente (con
ultimo argumento -1).

Espero que yo escribo bastante claro. No estoy cierto :-(

Saludos,

Daniel M.
Respuesta Responder a este mensaje
#3 Héctor Miguel
13/12/2003 - 01:56 | Informe spam
hola, Daniel.M !

... 3 busquedas binarias se resolven MUCHO mas rapidamente que UNA busqueda secuencial.
... prefiero ... INDICE(COINCIDIR()) en lugar de BuscarV() porque:
1. no ... dependencia entre las columnas. Si el OP cambia ... B1:B6 a C1:C6, la formula va seguir [...]
2. COINCIDIR puede buscar en una lista en orden creciente o decreciente (con ultimo argumento -1).



'tomado' de la pagina de Charles Wiliams: http://www.decisionmodels.com/optspeede.htm
Excel Pages - Optimising Speed: VLOOKUP versus INDEX and MATCH or OFFSET

BuscarV es ligeramente mas rapido (aprox. 5%), simple y usa menos memoria que combinar Coincidir e Indice o DesRef.
Coincidir e Indice 'ofrecen' una flexibilidad adicional que permite [en ocasiones] ahorrar tiempo comparados con BuscarV.
Indice es muy rapido y de Excel 97 en adelante es una funcion no-volatil (acelera el re-calculo).
DesRef también es muy rapido, pero es una funcion volatil

Coincidir e Indice, 'asume' que NUNCA se 'buscara' un valor mas pequeño que el valor mas pequeño en la lista
[por lo que puede necesitarse agregar un 'falsa' entrada 'muy pequeña' en la lista]

si el valor_buscado NO existe en una tabla NO ordenada [2 opciones]...
=Si(Contar.Si(Matriz_buscar_en,Valor_buscado)=0,"No existe",BuscarV(Valor_buscado,Tabla,Ind_columna,Falso))
=Si(EsNOD(BuscarV(Valor_buscado,Tabla,Ind_columna,Falso)),"No existe",BuscarV(Valor_buscado,Tabla,Ind_columna,Falso))

si el valor_buscado NO existe en una tabla ordenada... [la formula es en una sola linea]
=Si(Valor_buscado=Indice(Matriz_buscar_en,Coincidir(Valor_buscado,Matriz_buscar_en),1),
Indice(Matriz_buscar_en,Coincidir(Valor_buscado,Matriz_buscar_en),Ind_columna),“No existe”)

saludos,
hector.
Respuesta Responder a este mensaje
#4 Daniel.M
13/12/2003 - 16:46 | Informe spam
Gracias Héctor,

'tomado' de la pagina de Charles Wiliams:


http://www.decisionmodels.com/optspeede.htm
Excel Pages - Optimising Speed: VLOOKUP versus INDEX and MATCH or OFFSET

BuscarV es ligeramente mas rapido (aprox. 5%), simple y usa
menos memoria que combinar Coincidir e Indice o DesRef.
Coincidir e Indice 'ofrecen' una flexibilidad adicional que
permite [en ocasiones] ahorrar tiempo comparados con BuscarV.
Indice es muy rapido y de Excel 97 en adelante es una
funcion no-volatil (acelera el re-calculo).
DesRef también es muy rapido, pero es una funcion volatil



Me parece interesante la pagina de C. Williams. Gracias a ti.


Coincidir e Indice, 'asume' que NUNCA se 'buscara' un valor
mas pequeño que el valor mas pequeño en la lista



??
No debemos que tener esta molestia.
Es la razon par la cuale yo use de 2 SI() en mi formula.
Prefiero una formula mas general en lugar de tener a poner en una tabla, un
valor mas pequeño que el valor busquedo.
Es possible que no le entendi bien.

...

si el valor_buscado NO existe en una tabla ordenada...
[la formula es en una sola linea]
=Si(Valor_buscado=Indice(Matriz_buscar_en,Coincidir
(Valor_buscado,Matriz_buscar_en),1),
Indice(Matriz_buscar_en,Coincidir(Valor_buscado,
Matriz_buscar_en),Ind_columna),“No existe”)



Esta formula no funciona para mi (XL 2000) porque Coincidir() con una matriz de
mas de 1 columna no funciona.
Y tiene que definir Matriz_buscar_en con mas de 1 columna sino Indice no va a
functionar (si Ind_columna >1).
El la razon de la utilization de LookupList _Y_ LookupArray en las formulas de
C. Williams (LookupList = primera columna de LookupArray).

Saludos,

Daniel M.
Respuesta Responder a este mensaje
#5 Héctor Miguel
13/12/2003 - 23:35 | Informe spam
jhola, Daniel.M !

Gracias Héctor,



no, hombre... gracias a ti [por tu continua aportacion de soluciones, simplificaciones y explicaciones] :))

Me parece interesante la pagina de C. Williams.



vaya que si lo es !!!

... formula no funciona ... con una matriz de mas de 1 columna [...]
... la razon de ... LookupList _Y_ LookupArray en las formulas de C. Williams (LookupList = primera columna de LookupArray).



tienes razon ['para variar']... se trata de un error MIO por una 'traduccion/conversion acelerada' :(( [perdon]

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida