Funciones Anidadas

28/02/2005 - 20:44 por Gina | Informe spam
Alguien me puede ayudar a analizar la siguiente formula,
bueno mas que analizar a ver porque al cambiar un
parametro envia error

=IF(ISERROR(IF(ISERROR(VLOOKUP($BG2,db_mue,1,FALSE)),IF
(ISERROR(VLOOKUP(CONCATENATE(MID($BG2,1,7),"XX","_",RIGHT
($BG2,3)),db_mue,1,FALSE)),VLOOKUP(CONCATENATE(MID
($BG2,1,10),"*"),db_mue,1,FALSE),VLOOKUP(CONCATENATE(MID
($BG2,1,7),"XX","_",RIGHT($BG2,3)),db_mue,1,FALSE)),IF
(ISERROR(VLOOKUP(CONCATENATE(MID
($BG2,1,10),"*"),db_mue,1,FALSE)),VLOOKUP(CONCATENATE(MID
($BG2,1,7),"XX","_","*"),db_mue,1,FALSE),VLOOKUP
($BG2,db_mue,1,FALSE)))),"Incorrecta",IF(ISERROR(VLOOKUP
($BG2,db_mue,1,FALSE)),IF(ISERROR(VLOOKUP(CONCATENATE(MID
($BG2,1,7),"XX","_",RIGHT($BG2,3)),db_mue,1,FALSE)),VLOOKUP
(CONCATENATE(MID($BG2,1,10),"*"),db_mue,1,FALSE),VLOOKUP
(CONCATENATE(MID($BG2,1,7),"XX","_",RIGHT
($BG2,3)),db_mue,1,FALSE)),IF(ISERROR(VLOOKUP(CONCATENATE
(MID($BG2,1,10),"*"),db_mue,1,FALSE)),VLOOKUP(CONCATENATE
(MID($BG2,1,7),"XX","_","*"),db_mue,1,FALSE),VLOOKUP
($BG2,db_mue,1,FALSE))))

En el segundo renglon hay una formula:

MID($BG2,1,7)

si esta formula se mentiene así no hay problema la formula
completa funciona correctamente, pero si hago un cambio
necesario como el que sigue:

MID($BG2,1,FIND("_",BG2))

envia error, si ven la funcion en la penultima linea viene
la misma formula, si aplico aqui el cambio no manda error,
alguien puede decirme por que sucede esto?
 

Leer las respuestas

#1 Héctor Miguel
01/03/2005 - 08:59 | Informe spam
hola, Gina !

... analizar la siguiente formula, bueno mas que analizar a ver porque al cambiar un parametro envia error
... [sigue formula +/- 'larguita']... <ver la consulta original> :))
... segundo renglon hay una formula: MID($BG2,1,7)
... no hay problema... pero si hago un cambio necesario como el que sigue: MID($BG2,1,FIND("_",BG2))
... envia error... en la penultima linea... la misma formula, si aplico aqui el cambio no manda error
... por que sucede esto?



1.- cuando 'intentas' modificar de: MID($BG2,1,7) a: -> MID($BG2,1,FIND("_",BG2)) [segunda linea de tu mensaje]
el 'error' es causado porque la funcion ->'Find()'<- estaria excediendo ->el limite<- de funciones 'anidadas' :(

2.- 'aprovechando el viaje', despues de [tratar de] 'analizar' la formula que estas empleando [y segun 'entiendo']...
lo que 'se busca' es: localizar un dato en la primera columna de una tabla [o base de datos] ->NO ordenada<-
dicho dato pudiera ser 'localizado'...
a) de manera 'directa' -> vlookup($bg2,db_mue,1,false)
b) de manera 'parcial' -> vlookup(concatenate(mid($bg2,1,7),"XX","_","*"),db_mue,1,false)
c) de manera 'forzada' -> vlookup(concatenate(mid($bg2,1,10),"*"),db_mue,1,false)
d) o 'simplemente'... NO se encuentra en la tabla -> "Incorrecta"

-> si he entendido +/- bien... prueba con la siguiente formula [65% mas 'delgada']
obviamente debe ser en una sola linea, la separo para que sea +/- 'entendible'

=choose(1+max(
3*not(iserror(vlookup($bg2,db_mue,1,0))),
2*not(iserror(vlookup(left($bg2,7)&"xx_"&right($bg2,3),db_mue,1,0))),
1*not(iserror(vlookup(left($bg2,10)&"*",db_mue,1,0)))),
"incorrecta",
vlookup(left($bg2,10)&"*",db_mue,1,0),
vlookup(left($bg2,7)&"xx_"&right($bg2,3),db_mue,1,0),
vlookup($bg2,db_mue,1,0))

si cualquier duda... ¿comentas?
saludos,
hector.

Preguntas similares