=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?
> ... 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.
De cualquier manera y esperando no sonar chocante me queda
la duda del porque del error en mi formula, como lo
comente, en otro lugar de la formula esta la misma funcion
con exactamente los mismos parametros y las mismas
funciones anidadas,si hago el cambio alli no hay ningun
problema, lo cual quiere decir que no excede el limite de
funciones anidadas, no quisiera quedarme con la duda pero
si no hay de otra, pues que se le puede hacer
Con esto no quiero decir que no te agradezco tu ayuda, por
el contrario, me ha ayudado mas de lo que esperaba ya que
la formula original debia tenerla en por lo menos 10,000
celdas y ya imaginaras lo pesado y lendo que se hace el
calculo
Bueno me despido de ti no sin antes reiterar nuevamente mi
agradecimiento
Saludos
Gina
>-----Mensaje original-----
>.
>
> ... el objetivo de la formula... con la depuracion... obtuve mejores resultados
> ... saber en donde aprendiste, digo si no es indiscrecion
> ... me queda la duda del porque del error en mi formula
> ... en otro lugar... misma funcion... parametros... funciones anidadas... no hay ningun problema
> ... quiere decir que no excede el limite de funciones anidadas, no quisiera quedarme con la duda [...]
> ... me ha ayudado mas de lo que esperaba ya que... debia tenerla en por lo menos 10,000 celdas
> ... ya imaginaras... el calculo
tratare de 'dar respuesta' a la [posible] 'confusion' en cuanto al 'nivel de anidacion' de las funciones :))
si cualquier duda... ¿comentas?
saludos,
hector.
___
1.- el 'nivel' de las funciones anidadas NO 'se cuenta' de manera 'aislada' [funcion por funcion]
considera que cada funcion [anidada] va formando parte de una 'cadena de funciones' [en niveles 'superiores']
en la formula 'original' [y mas 'concretamente'] EN el nivel donde 'falla', la cadena esta formada como sigue:
-> 'N' seria el nivel a donde va 'avanzando/retrocediendo' cada funcion segun su 'anidacion' [dentro de otras]
N - funcion
0) if(
1) iserror(
2) if(
3) iserror(
4) vlookup($bg2,db_mue,1,false)),
3) if(
4) iserror(
5) vlookup(
6) concatenate(
7) mid($bg2,1,7), [... etc. etc. etc.]
=> la funcion 'Find()' que 'intentas' anidarle a la funcion 'mid()' estaria 'alcanzando' un nivel 8 'inadmisible' :(
___
2.- la funcion 'concatenate()' [en este preciso caso] esta 'estorbando' ya que...
a) SI 'cuenta' para los niveles de 'anidacion' y...
b) NO es 'imprescindible', si se puede sustituir por una 'concatenacion-directa' [usando el caracter '&']
___
3.- como en la formula original existe una serie de 'redundancias', otra forma de 'adelgazarla' seria +/- como sigue:
=if(not(iserror(vlookup($bg2,db_mue,1,0))),vlookup($bg2,db_mue,1,0),
if(not(iserror(vlookup(left($bg2,7)&"xx_"&right($bg2,3),db_mue,1,0))),vlookup(left($bg2,7)&"xx_"&right($bg2,3),db_mue,1,0),
if(not(iserror(vlookup(left($bg2,10)&"*",db_mue,1,0))),vlookup(left($bg2,10)&"*",db_mue,1,0),"incorrecta")))
___
4.- la [unica] 'diferencia' entre la formula anterior y la propuesta en el mensaje anterior es...
en la formula anterior se 'continua' usando la funcion 'if()' que es un 'si-condicional' y se calcula mas 'lento' que...
en la formula propuesta se usan 'sies booleanos' [verdadero/falso o 0/1] que son [ligeramente] mas 'rapidos'
[por si quieres 'considerar' una -posible- 'mejora' en el rendimiento y el re/calculo del modelo] ;)
___
5.- con respecto a: 'en donde aprendi'... [que a decir verdad... =>sigo aprendiendo<=] :))
a continuacion te menciono [algunas de] las fuentes de informacion [que estan al alcance de todos] ;)
libros y revistas... la ayuda de excel [F1]... consultas en la web... participar en foros [como este]...
'comprando' [o tratando de 'resolver' o aportar soluciones a] problemas 'ajenos'... etc. etc. etc.
aahhh, y [un 'cierto' tiempo con...] un poco de experiencia laboral/personal
=> puedes elegir la/s que consideres a tu alcance [en realidad, me he valido de todas] ;)
Agradezco tu ayuda
Saludos
Gina
>-----Mensaje original-----
>.
>
> ... poco a poco voy comprendiendo
> ... a partir de que me propuse... he aprendido mas de lo que se suponia sabia hacer
> ... en ocaciones la ayuda de excel se me hace un poco confusa
> ... alguna bibliografia que pueda considerar
-> [hasta donde se] el aprendizaje es un proceso que 'toma su propio ritmo y aceleracion'
-> con respecto de lo 'confuso' que resulta [en ocasiones] la ayuda en linea...
[dale tiempo... veras que] cada vez presentara menos confusiones
-> en relacion con alguna bibliografia [aparte de que NO existe 'libro malo']...
ademas de la ayuda de excel y el soporte de muchos en este foro...
te apunto algunas direcciones => solo te 'advierto' que BAJO TU PROPIO RIESGO <=
[estas empezando a correr el riesgo de convertirte en 'excelomana'] :))
saludos,
hector.
=====
http://www.franciscopascual.com/Archivos/Excel%202002.zip
http://www.javeriana.edu.co/decisiones/modelos/ejemplos_y_ejercicios.html
http://www.javeriana.edu.co/cursad/diplomado/ejemplos_j_sarmiento.html
http://members.fortunecity.es/tonelorc/eexcel.html
http://www.aulaclic.es/excel2000/f_excel2000.htm
http://64.226.188.26/sivnetwork-www/cursos_gratis/excel/Excel.htm
http://www.territoriopc.com/excel/
http://interinfo.iespana.es/interinfo/info_general/manuales/manuales_ig.htm
http://www.fullwebs.com.uy/endondeestamos/Downloads/Tutoriales/excel.pdf
http://office.arnulfoperez.com/excel/
http://lacher.com/toc.htm
http://www.sistemaslym.net/vba/excel/excel.html
http://es.geocities.com/lacibelesdepunilla/macros.htm
http://es.geocities.com/lacibelesdepunilla/macros1.htm
http://www.macroheavy.com/excel/excel.asp
http://www.geocities.com/gorita_2000/VBA.htm
http://www.excelavanzado.com/
http://www.xtec.es/~rlloren4/KBEsp2.htm
http://www.exceluciones.com/portal/index.php?article=35
Saludos
Gina
>-----Mensaje original-----
>.
>
> ... me gusto el calificativo de excelomana
=> pues... 'a por el...'
ya diste el primer paso, lo siguiente es... 'seguir dando pasos' :)
> espero poder seguir aprovechandote en un futuro... si me lo permites
=> siempre que 'me toque' [en suerte/turno] saber respuestas a lo que consultes... ;)
saludos,
hector.