FORMULA EXTENSA ???

24/06/2007 - 00:47 por Orfao | Informe spam
Hola foristas...
en un post anterir hice una pregunta al respecto pero... "no me quedo bien
clara la respuesta. Tal vez la implemente erroneamente. Sorry... y ahora se
me ha complicado un poco mas"
tal vez ahora explique mejor el caso:
tengo los siguientes datos:
en T7 tengo un valor que representa el intervalo de evaluacion es decir 7
para semanal, 14 para quincenal, etc
el planificador decide que valor colocarle.
en U7 la fecha de inicio del proyecto
en V7 la fecha del primer informe
desde W7 hasta DD7 las siguientes fechas de informes es decir W7=V7+T7 ;
X7=W7+T7 ; .. ; DD7Ü7+T7
En la columna O21 Tengo la fecha de inicio de la actividad correspondiente a
esa fila
En la columna P21 Tengo la fecha de fin de la actividad correspondiente a
esa fila
En la columna Q21==+DIAS.LAB(O21;P21;feriados) donde "feriados" es un rango
con fechas no laborables



V21=+SI(Y(V$7>=$O21;V$7-U$7<$P21);SI(DIAS.LAB($O21;V$7;feriados)<=DIAS.LAB(V$7-U$7+1;V$7;feriados);SI(DIAS.LAB($O21;V$7;feriados)<$Q21;DIAS.LAB($O21;V$7;feriados);$Q21);

SI(DIAS.LAB($O21;V$7;feriados)>=$Q21;DIAS.LAB(V$7-U$7+1;$P21;feriados);DIAS.LAB(V$7-U$7+1;V$7;feriados)))*1/$Q21;0)

W21=+SI(Y(W$7>=$O21;W$7-$T$7<$P21);SI(DIAS.LAB($O21;W$7;feriados)<=DIAS.LAB(W$7-$T$7+1;W$7;feriados);SI(DIAS.LAB($O21;W$7;feriados)<$Q21;DIAS.LAB($O21;W$7;feriados);$Q21);

SI(DIAS.LAB($O21;W$7;feriados)>=$Q21;DIAS.LAB(W$7-$T$7+1;$P21;feriados);DIAS.LAB(W$7-$T$7+1;W$7;feriados)))*1/$Q21;0)

W21 la copio y pego desde X21 hasta DD21
lo anterior se repite en dferentes filas de 2 en 2 es decir en la 23, 25,
27, etc

en V19 tendo la siguiente formula matricial:
{=+SUMA(INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";V20);4)&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";V20);4))*INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";$U20))&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";$U20))))}

donde en B20 tengo el numero de subpartidas a sumar (filas en las que se
repite las formulas anteriores)

todo esto me funciona a la perfeccion... PERO...
el problema es que tengo en la columna A y en cada fila donde estan las
formulas un indicador que me dice si esa fila es una detalle donde en ese
caso tendria que utilizar el segundo grupo de formulas o, es un grupo de
partidas donde tengo que usar el orimer grupo ...
y creo que quedaria algo asi como
+si(a20="Grupo";{=+SUMA(INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";V20);4)&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";V20);4))*INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";$U20))&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";$U20))))};
+SI(Y(V$7>=$O21;V$7-U$7<$P21);SI(DIAS.LAB($O21;V$7;feriados)<=DIAS.LAB(V$7-U$7+1;V$7;feriados);SI(DIAS.LAB($O21;V$7;feriados)<$Q21;DIAS.LAB($O21;V$7;feriados);$Q21);

SI(DIAS.LAB($O21;V$7;feriados)>=$Q21;DIAS.LAB(V$7-U$7+1;$P21;feriados);DIAS.LAB(V$7-U$7+1;V$7;feriados)))*1/$Q21;0))

Se entiende????
Alguno de Uds me ayuda por lo menos a simplificar estas formulas???
Estare sumamente agradecido

Me alimento del conocimiento de todos
 

Leer las respuestas

#1 Héctor Miguel
24/06/2007 - 09:35 | Informe spam
hola, moises !

1) para la primera parte de tu consulta, las formulas que utilizas en V21 distinta de W21 y que extiendes hasta DD21

a) puedes 'recortarlas' +/- un 60% [de 283 a solo 112 caracteres] usando la siguiente [igual desde V21 -> DD21]

[V21] =si(y($o21>=$u$7;v$7>=$o21;$p21>u$7);dias.lab(si(($o21>u$7);$o21;u$7+1);si(($p21>v$7);v$7;$p21);feriados)/$q21;0)

b) si el caso es el que comentabas anteriormente de ~4000 formulas, te sugiero cambiar del si-condicional a un elegir:

=elegir(1+y($o21>=$u$7;v$7>=$o21;$p21>u$7);0;dias.lab(elegir(1+($o21>u$7);u$7+1;$o21);elegir(1+($p21>v$7);$p21;v$7);feriados)/$q21)

2) para la segunda parte de tu consulta: -> la formula matricial con direccion(...) donde usas la funcion celda("fila"... / "columna"...)
[sinceramente] no la entiendo :-((
aunque comentas que funciona 'a la perfeccion'... no se ve cual sea el 'objetivo'... ademas de que [p.e.]:
donde usas: -> DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";V20);4)

a) la parte de: CELDA("fila";$B20) => devuelve: 20 [independientemente de que valor hayas puesto en 'B20'] -?????-
b) igual para: CELDA("columna";V20) devuelve: 22 [independientemente de que valor hayas puesto en 'V20'] -?????-

-> si pudieras comentar detalles mas... 'concretos'... -?-

saludos,
hector.

__ la consulta original __
... en T7 tengo un valor que representa el intervalo de evaluacion es decir 7 para semanal, 14 para quincenal, etc
el planificador decide que valor colocarle.
en U7 la fecha de inicio del proyecto
en V7 la fecha del primer informe
desde W7 hasta DD7 las siguientes fechas de informes es decir W7=V7+T7; X7=W7+T7; .. ; DD7Ü7+T7
En la columna O21 Tengo la fecha de inicio de la actividad correspondiente a esa fila
En la columna P21 Tengo la fecha de fin de la actividad correspondiente a esa fila
En la columna Q21==+DIAS.LAB(O21;P21;feriados) donde "feriados" es un rangocon fechas no laborables

V21=+SI(Y(V$7>=$O21;V$7-U$7<$P21);SI(DIAS.LAB($O21;V$7;feriados)<=DIAS.LAB(V$7-U$7+1;V$7;feriados);SI(DIAS.LAB ($O21;V$7;feriados)<$Q21;DIAS.LAB($O21;V$7;feriados);$Q21);SI(DIAS.LAB($O21;V$7;feriados)>=$Q21;DIAS.LAB(V$7-U$7+1;$P21;feriados);DIAS.LAB(V$7-U$7+1;V$7;feriados)))*1/$Q21;0)

W21=+SI(Y(W$7>=$O21;W$7-$T$7<$P21);SI(DIAS.LAB($O21;W$7;feriados)<=DIAS.LAB(W$7-$T$7+1;W$7;feriados);SI(DIAS.LAB($O21;W$7;feriados)<$Q21;DIAS.LAB($O21;W$7;feriados);$Q21);SI(DIAS.LAB($O21;W$7;feriados)>=$Q21;DIAS.LAB(W$7-$T$7+1;$P21;feriados);DIAS.LAB(W$7-$T$7+1;W$7;feriados)))*1/$Q21;0)

W21 la copio y pego desde X21 hasta DD21 lo anterior se repite en dferentes filas de 2 en 2 es decir en la 23, 25, 27, etc



__ el resto de la consulta __
en V19 tendo la siguiente formula matricial:
{=+SUMA(INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";V20);4)&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";V20);4))*INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";$U20))&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";$U20))))}

donde en B20 tengo el numero de subpartidas a sumar (filas en las que se repite las formulas anteriores)

todo esto me funciona a la perfeccion... PERO... el problema es que tengo en la columna A y en cada fila donde estan las formulas
un indicador que me dice si esa fila es una detalle donde en ese caso tendria que utilizar el segundo grupo de formulas o
es un grupo de partidas donde tengo que usar el orimer grupo ...
y creo que quedaria algo asi como
+si(a20="Grupo";{=+SUMA(INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";V20);4)&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";V20);4))*INDIRECTO(DIRECCION(CELDA("fila";$B20)+1;CELDA("columna";$U20))&":"&+DIRECCION(CELDA("fila";$B20)+$B20*2;CELDA("columna";$U20))))};+SI(Y(V$7>=$O21;V$7-U$7<$P21);SI(DIAS.LAB($O21;V$7;feriados)<=DIAS.LAB(V$7-U$7+1;V$7;feriados);SI(DIAS.LAB($O21;V$7;feriados)<$Q21;DIAS.LAB($O21;V$7;feriados);$Q21);SI(DIAS.LAB($O21;V$7;feriados);$Q21;DIAS.LAB(V$7-U$7+1;$P21;feriados);DIAS.LAB(V$7-U$7+1;V$7;feriados)))*1/$Q21;0))

Se entiende????
Alguno de Uds me ayuda por lo menos a simplificar estas formulas???
Estare sumamente agradecido

Me alimento del conocimiento de todos

Preguntas similares