Reducir y mejorar fórmula

20/05/2007 - 12:37 por Ernesto | Informe spam
Hola a todos.
A ver si me podría alguien ayudar.
Tengo una fórmula, que se repite bastantes veces, en distintas celdas y
columnas y creo que se podría reducir y 'afinar'.
La fórmula en cuestión es:
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
En cierta ocasión Héctor Miguel me
dejó:=SI(CJ524úLSO;"";SI(CJ524=$H$3/2;"";SI(CJ524=$H$3/3;$H$3/3;SI(CJ524=$H$3/4;$H$3/4;SI(CJ524=$H$3/5;$H$3/5;SI(CJ524=$H$3/6;$H$3/6)))))),
en:
=SI(O(CJ524úLSO;CJ524=$H$3/2);"";SI(ESNUMERO(COINCIDIR($H$3;CJ524*{3\4\5\6};0));CJ524)),yfunciona igual.Soy novato y aún con este ejemplo no me atrevo a 'cambiarla' al formato'*{3\4\5\6};0))', ya que esta hoja es muy valiosa para el trabajo.Gracias y saludos.

Preguntas similare

Leer las respuestas

#1 KL
20/05/2007 - 18:35 | Informe spam
Hola Ernesto,

"Ernesto" wrote in message news:
Hola a todos.
A ver si me podría alguien ayudar.
Tengo una fórmula, que se repite bastantes veces, en distintas celdas y
columnas y creo que se podría reducir y 'afinar'.
La fórmula en cuestión es:
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
En cierta ocasión Héctor Miguel me
dejó:=SI(CJ524úLSO;"";SI(CJ524=$H$3/2;"";SI(CJ524=$H$3/3;$H$3/3;SI(CJ524=$H$3/4;$H$3/4;SI(CJ524=$H$3/5;$H$3/5;SI(CJ524=$H$3/6;$H$3/6)))))),
en:
=SI(O(CJ524úLSO;CJ524=$H$3/2);"";SI(ESNUMERO(COINCIDIR($H$3;CJ524*{3\4\5\6};0));CJ524)),yfunciona igual.Soy novato y aún con
este ejemplo no me atrevo a 'cambiarla' al formato'*{3\4\5\6};0))', ya que esta hoja es muy valiosa para el trabajo.Gracias y
saludos.



El ejemplo que expones es literalmente lo siguiente:

=SI($B77="A";SI($G77;$H$3/$G77;0))

o bien

=SI(Y($B77="A";$G77);$H$3/$G77;0)

pero si quieres algo mas generico (tal como te hizo HM en otra ocasion), entonces:

=SI($B77="A";SI(ESNUMERO(COINCIDIR($G77;{1\2\3\4\5\6};0));$H$3/INDICE({1\2\3\4\5\6};COINCIDIR($G77;{1\2\3\4\5\6};0);"")))

Saludos,
KL
Respuesta Responder a este mensaje
#2 Ernesto
20/05/2007 - 21:39 | Informe spam
Gracias KL por tu rapida contestacion. Omiti que con mi formula, no podria
hacer mas SI( porque me paso de 6), por lo que necesitaba una que pudiera
seguir poniendo ...\7\8\9 como la que en su dia me facilito HM.

Dices:
"'El ejemplo que expones es literalmente lo siguiente:

=SI($B77="A";SI($G77;$H$3/$G77;0))

o bien

=SI(Y($B77="A";$G77);$H$3/$G77;0)'"

Como soy novato, (ya ves que formulas construyo), lo que dices no veo que se
ajuste a lo que quiero en mi formula, ya que la mia tiene 'SEIS'
condiciones:
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6))))))),
y por ello solicitaba una que contuviera instrucciones como
'{1\2\3\4\5\6};0))', y que fuera mas 'corta'

Probare la tuya
'=SI($B77="A";SI(ESNUMERO(COINCIDIR($G77;{1\2\3\4\5\6};0));$H$3/INDICE({1\2\3\4\5\6};COINCIDIR($G77;{1\2\3\4\5\6};0);"")))'
(no crei que tuviera que ser tan larga), a ver si me funciona.

Gracias por tus ensenanzas y por tu tiempo.

Un saludo.


"KL" escribio en el mensaje
news:
Hola Ernesto,

"Ernesto" wrote in message
news:
Hola a todos.
A ver si me podría alguien ayudar.
Tengo una fórmula, que se repite bastantes veces, en distintas celdas y
columnas y creo que se podría reducir y 'afinar'.
La fórmula en cuestión es:
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
En cierta ocasión Héctor Miguel me
dejó:=SI(CJ524úLSO;"";SI(CJ524=$H$3/2;"";SI(CJ524=$H$3/3;$H$3/3;SI(CJ524=$H$3/4;$H$3/4;SI(CJ524=$H$3/5;$H$3/5;SI(CJ524=$H$3/6;$H$3/6)))))),
en:
=SI(O(CJ524úLSO;CJ524=$H$3/2);"";SI(ESNUMERO(COINCIDIR($H$3;CJ524*{3\4\5\6};0));CJ524)),yfunciona
igual.Soy novato y aún con este ejemplo no me atrevo a 'cambiarla' al
formato'*{3\4\5\6};0))', ya que esta hoja es muy valiosa para el
trabajo.Gracias y saludos.



El ejemplo que expones es literalmente lo siguiente:

=SI($B77="A";SI($G77;$H$3/$G77;0))

o bien

=SI(Y($B77="A";$G77);$H$3/$G77;0)

pero si quieres algo mas generico (tal como te hizo HM en otra ocasion),
entonces:

=SI($B77="A";SI(ESNUMERO(COINCIDIR($G77;{1\2\3\4\5\6};0));$H$3/INDICE({1\2\3\4\5\6};COINCIDIR($G77;{1\2\3\4\5\6};0);"")))

Saludos,
KL
Respuesta Responder a este mensaje
#3 Héctor Miguel
21/05/2007 - 06:36 | Informe spam
hola, Ernesto !

... formula, que se repite bastantes veces, en distintas celdas y columnas y creo que se podría reducir y 'afinar'...
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
[...]



asumiendo que las condicionales son 'semejantes' a las de tu consulta anterior [es decir]...

1) tienes una condicion 'directa'...
a) comprobar si $B77 contiene "A"
2) tienes otra 'condicionante' indirecta...
estas buscando exclusivamente valores 'exactos' al comparar si $G77 es IGUAL a...
-> SOLAMENTE 1, 2, 3, 4, 5 y 6 -> [y en enteros]
3) asumiendo que comparaciones 'intermedias' no son 'permitidas'... [me explico]...
que deberia devolver la formula si $G77 contiene valores 'intermedios' ??? [3,2 - 4,7 - 5,1 - etc.]
la siguiente formula 'hace' [+/- exactamente] lo mismo que tu formula original [la expuesta]...

=si(y($b77="a";esnumero(coincidir($g77;{1\2\3\4\5\6},0)));$h$3/$g77)

-> la unica 'ventaja' es que no necesitarias seguir 'anidando' funciones si-condicionales :))
solo necesitas aumentar la matriz constante: -> {1\2\3\4\5\6\}
OJO, que mi sistema usa barra invertida para separar filas en matrices constantes -?-

si cualquier duda [o se hubiera quedado algun detalle 'en el tintero']... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Ernesto
21/05/2007 - 20:29 | Informe spam
Gracias Héctor Miguel.
Tu 'otra' formula de mi consulta anterior, me va como la mia y tiene la
doble ventaja de que es más corta y tiene más posibilidades para futuro.
-Tanto la anterior como esta, no tiene valores intermedios '[3,2 - 4,7 -
5,1 - etc.]'
-Antes de hacer esta consulta y como tenía el ejemplo de la anterior que me
solucionaste, intenté y probé, pero no me funcionaba. Siempre hay alguna
'cosa' que se me olvida.
-Tengo más formulaciones, _hechas por mi como la 'cuenta de la vieja'_ que
me funcionan, pero soy consciente de que no están 'afinadas' y que para el
futuro no me darán el rendimiento deseado, por eso poco a poco, estoy
intentando mejorarlas.
-Como a vosotros y a ti en especial, no os cuesta mucho, las seguiré
planteando, cuando no salgan adelante con mis pruebas.
Mil gracias como siempre por tu tiempo, interés y soluciones perfectas que
aportas al foro.

"Héctor Miguel" escribió en el mensaje
news:%
hola, Ernesto !

... formula, que se repite bastantes veces, en distintas celdas y
columnas y creo que se podría reducir y 'afinar'...
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
[...]



asumiendo que las condicionales son 'semejantes' a las de tu consulta
anterior [es decir]...

1) tienes una condicion 'directa'...
a) comprobar si $B77 contiene "A"
2) tienes otra 'condicionante' indirecta...
estas buscando exclusivamente valores 'exactos' al comparar si $G77 es
IGUAL a...
-> SOLAMENTE 1, 2, 3, 4, 5 y 6 -> [y en enteros]
3) asumiendo que comparaciones 'intermedias' no son 'permitidas'... [me
explico]...
que deberia devolver la formula si $G77 contiene valores 'intermedios'
??? [3,2 - 4,7 - 5,1 - etc.]
la siguiente formula 'hace' [+/- exactamente] lo mismo que tu formula
original [la expuesta]...

=si(y($b77="a";esnumero(coincidir($g77;{1\2\3\4\5\6},0)));$h$3/$g77)

-> la unica 'ventaja' es que no necesitarias seguir 'anidando' funciones
si-condicionales :))
solo necesitas aumentar la matriz constante: -> {1\2\3\4\5\6\}
OJO, que mi sistema usa barra invertida para separar filas en matrices
constantes -?-

si cualquier duda [o se hubiera quedado algun detalle 'en el tintero']...
comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#5 Ernesto
22/05/2007 - 00:54 | Informe spam
Hola otra vez HM;
He probado la formula que me dabas :
=si(y($b77="a";esnumero(coincidir($g77;{1\2\3\4\5\6};0)));$h$3/$g77), tal
como está aquí, '[OJO, que mi sistema usa barra invertida para separar filas
en matrices constantes -?-]', y no me funciona, no me da ningún valor, ni
error. Como si trabajara sobre valores 0 (cero), cuando '$G77, tiene valores
del 1 al 6, y $H$3 también tiene un valor.
-KL, tambien me contestó y me daba:
=SI($B77="A";SI(ESNUMERO(COINCIDIR($G77;{1\2\3\4\5\6};0));$H$3/INDICE({1\2\3\4\5\6};COINCIDIR($G77;{1\2\3\4\5\6};0);""))),
que no he probado aún.


"Ernesto" escribió en el mensaje
news:
Gracias Héctor Miguel.
Tu 'otra' formula de mi consulta anterior, me va como la mia y tiene la
doble ventaja de que es más corta y tiene más posibilidades para futuro.
-Tanto la anterior como esta, no tiene valores intermedios '[3,2 - 4,7 -
5,1 - etc.]'
-Antes de hacer esta consulta y como tenía el ejemplo de la anterior que
me solucionaste, intenté y probé, pero no me funcionaba. Siempre hay
alguna 'cosa' que se me olvida.
-Tengo más formulaciones, _hechas por mi como la 'cuenta de la vieja'_ que
me funcionan, pero soy consciente de que no están 'afinadas' y que para el
futuro no me darán el rendimiento deseado, por eso poco a poco, estoy
intentando mejorarlas.
-Como a vosotros y a ti en especial, no os cuesta mucho, las seguiré
planteando, cuando no salgan adelante con mis pruebas.
Mil gracias como siempre por tu tiempo, interés y soluciones perfectas que
aportas al foro.

"Héctor Miguel" escribió en el mensaje
news:%
hola, Ernesto !

... formula, que se repite bastantes veces, en distintas celdas y
columnas y creo que se podría reducir y 'afinar'...
=SI($B77="A";SI($G77=1;$H$3;SI($G77=2;$H$3/2;SI($G77=3;$H$3/3;SI($G77=4;$H$3/4;SI($G77=5;$H$3/5;SI($G77=6;$H$3/6)))))))
[...]



asumiendo que las condicionales son 'semejantes' a las de tu consulta
anterior [es decir]...

1) tienes una condicion 'directa'...
a) comprobar si $B77 contiene "A"
2) tienes otra 'condicionante' indirecta...
estas buscando exclusivamente valores 'exactos' al comparar si $G77 es
IGUAL a...
-> SOLAMENTE 1, 2, 3, 4, 5 y 6 -> [y en enteros]
3) asumiendo que comparaciones 'intermedias' no son 'permitidas'...
[me explico]...
que deberia devolver la formula si $G77 contiene valores 'intermedios'
??? [3,2 - 4,7 - 5,1 - etc.]
la siguiente formula 'hace' [+/- exactamente] lo mismo que tu formula
original [la expuesta]...

=si(y($b77="A";esnumero(coincidir($g77;{1\2\3\4\5\6};0)));$h$3/$g77)

-> la unica 'ventaja' es que no necesitarias seguir 'anidando' funciones
si-condicionales :))
solo necesitas aumentar la matriz constante: -> {1\2\3\4\5\6\}
OJO, que mi sistema usa barra invertida para separar filas en matrices
constantes -?-

si cualquier duda [o se hubiera quedado algun detalle 'en el tintero']...
comentas ?
saludos,
hector.





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida