¿Referencia circular, o no?

RalphA

Well-known Member
Joined
May 14, 2003
Messages
3,829
Hola, amigos. Tengo una pregunta que hacer.
Entro,
en C1, 1
en D1, 1 en D2, 2 en D3, 3 y así sucesivamente hasta, digamos, D10
en E1, =IF($C$1 = D1,$A$1+$B$1,F1), y copio hacia abajo hasta E10
en F1, =E1, y copio hacia abajo hasta F10

Luego, en A1 entro 20, y, en B1 entro 15.
En E1 aparece el valor de la suma A1+B1, que es 35, en este ejemplo.
Y, en F1, aparece el valor de E1, que es 35.

Ahora, cambiamos el valor en C1, á 2.
Luego, cambiamos los valores en A1 y B1, á 12 y 15.
E1 y F1 siguen siendo 35
E2 y F2 ahora valen 12+15, o sea, 27

Ahora, cambiamos el valor en C1 a 3.
Luego, cambiamos los valores en A1 y B1 á 3 y 6
E1 y F1 siguen siendo 35
E2 y F2 siguen siendo 27
E3 y F3 ahora valen 3+6 = 9

Lo que describí arriba resultó de una pregunta. En mi contestación, en C1, puse la fecha de hoy, en forma =TODAY(), que es 02/21/2007. En D1 puse 02/22/2007, con fechas sucesivas de cada día en D2, D3, etc.

Cuando formulé mi solución de arriba, con la fórmula que puse en la columna F, pensé que tendría uno de esos problemas de referencias circulares, y que tendría que ver cómo resolvía el problema. Para mi gran sorpresa, todo funcionó de lo más bien, y, ¡me quedé asombrado!

Mi pregunta es: ¿por qué es que no surgió la referencia circular? O es quizá que, mientras se ponga la fórmula en la columna E antes que la fórmula de la columna F, como la fórmula en E1 ejecuta la primera parte del IF, encuentra que es cierto que C1=D1, hace la suma A1+B1, y…termina allí, sin ver al último término, resultando así que no hay referencia circular entre E1 y F1?

No sé si mi solución al problema de entradas que cambian cada día (o cualquier período de tiempo que uno quiera) sea una solución conocida ya, pero, yo quedé impresionado de que pude resolver esa pregunta sin rendirme al VBA!
 
Además:
Poner Iteraciones en 1, vale para todo el Libro o para toda la hoja?

Si vale para todo el libro, creo que es arriesgado el efecto que podria producir sobre la Smart Calculation de la que tanto habla C.W., pero si vale solo para determinada hoja ( no creo que se asi), podria uno limitarse al Planteo de Ralph, en esa hoja y manejarse con Iteracion Standard en el resto del libro

latente: ¿alcance de Iteracion: Libro u Hoja?

GALI
 
Upvote 0

Excel Facts

Spell Check in Excel
Press F7 to start spell check in Excel. Be careful, by default, Excel does not check Capitalized Werds (whoops)
Greg:

Probé tu fórmula de =SUM(F1:F10), poniéndola en la celda F11. Resultado correcto!

En todo caso, escucho tus palabras de muchísima más experiencia que yo. …Pero, como dijo Galileo, “E per si muove”, o algo así. Y, no me convencen las palabras, solamente una – o varias - pruebas que yo pueda repetir.

Como la fórmula que tu usastes te dió un error, al darte un 0 por resultado, eso parece decirme a mi que mi viejo Excel97 es más “estable” que tu Excel 2003. (Ja, ja, me dá risa, pero sin intención de ofender, por supuesto. Es que dice el dicho, “Más vale viejo conocido, que nuevo por conocer” – bueno, no exactamente, pero me gusta más así, para este caso.)
===============================================

Galileogali:

Probé eliminar la columna F. Como á vos, á mi me sigue dando el resultado correcto en la columna E. Más preguntas, ¿verdad?
 
Upvote 0
latente: ¿alcance de Iteracion: Libro u Hoja?
~GALI

Gali,

La opción de como calcular es una propiadad interesante. Excel usa el ajuste (setting) del cuaderno que se abrió inicialmente. Entonces si usted tiene un cuaderno PERSONAL, este cuaderno va a controlar esa opción cada vez que Excel arranca. Pero, si usted la cambia manualmente a otro, entonces cada cuaderno en Excel se cambia. Los ajustes de cálculo se quedan en efecto para cada cuaderno nuevo o existente que se abre depués de haber hecho el cambio. Entonces si tiene un cuaderno PERSONAL y esto tiene la opción no marcado, aunque usted archiva el cuaderno de Rafa con esta opción marcada, al abrir Excel el próximo día habrá que cambiarlo otra vez -- que implica usar un macro. Y evitar macros fue el propósito de todo esto, ¿no?
 
Upvote 0
Resumiendo:
cualquier archivo abierto con posterioridad a una Worbook_Open, o Auto_open, dejarà la Calculation en cualquier valor, y hacer una macro como bien dice Greg, para evitar otra no es un buen negocio. Sin embargo, como experimento, resulta interesante, porque obliga a repensar la Calculation en Excel, de un modo más ajustado y preciso.
 
Upvote 0
Hice este experimento:
Usando la fórmula que publiqué inicialmente, hice click en Tools, Options, Calculation, y observé que estaba marcada la cajita “Iteration”. Al quitar la marca en al cajita “Iteration”, y volver a la hoja, obtuve el error de una referencia circular.

Lo de arriba me hace pensar que “inestable” debe referirse, al menos en el caso presente, a que puede dar ese error si una persona tiene la cajita “Iteration” en blanco, mientras que le funcionará bien a una persona que sí tiene esa cajita marcada. Es decir, que puede dar un resultado “inestable”, de acuerdo a la condicón de esa cajita.

Entiendo por qué Greg no quisiera usar, para un trabajo “serio”, el método que yo usé. Pero, estoy seguro que habrán muchos casos en que se requiere que esa cajita esté marcada, por el hecho que se requieren las reiteraciones para uno o más cálculos. En ese caso, para un trabajo de ingeniería, que yo calificaría definitivamente de serio, ¿sería indispensable poner un aviso, para indicar que se debe marcar esa cajita? ¿O es que se debe usar código para hacer este tipo de cálculos en trabajos serios?

Como ejemplo de lo que, talvez, se pueda llamar “inestable”, un programador en el lenguaje usado en QuickBASIC (QB) dijo que ya no usa QB, porque encuentra que, como un ejemplo, de 50 programs que había hecho en el pasado, usando DOS, ahora solamente dos le trabajaron bajo Windows XP a varias personas. Yo, también, tuve muchos problemas con QB y XP (creía yo), hasta que encontré, después de muchas consultas y pruebas, que la culpa no era de XP, sino de un program de un “scanner” viejo que yo tenía, program que corría automáticamente al empezar la computadora, y que seguía corriendo en el fondo. Una vez que deshabilité el correr automáticamente a ese programa, todo resultó a la maravilla. Así, si algún programa o archivo encuentra problemas en correr en una computadora, al notarse que usa XP y que viene de una que no usaba XP, en la cual siempre corría correctamente, se dirá que no es compatible con XP, ya que esa respuesta le echa la culpa a un tercero y “absuelve” de culpa al programa. Así se quita del problema de investigar por qué no corre bien en XP.

Claro, yo veo que no es razonable esperar que el autor de un trabajo que se difunde ampliamente tenga que lidiar con las complicaciones evitables. Así, no usar fórmulas que dependen de cómo está una computadora configurada, evitará, a su vez, el tener clientes que experimentan problemas evitables. Y, esto me hace entender el evitar usar fórmulas “inestables”.
 
Upvote 0
Bueno - tal vez "inestable" no sea la palabra más adecuada posible. Tal vez "no robusto" o "no fuerte" sean términos mejores. "Inestable" implica que los resultados son impredicibles - y realmente no es asi. Lo más probable es que sí, uno podría predecir qué van a ser los resultados. Ni sé cuantas veces he ofrecido una fórmula a alguien y aparece Aladin o Fairwinds con una fórmula un poco (o a veces muy) diferente y siempre Aladin tiene una notita "the following is a bit more robust" que quiere decir que es más dificil provocar una falla en la solución. Esto de usar referencia circulares, para mí, sería una solución débil en el sentido que me parece fácil "quebrarla".

Pero siempre interesante estudiar. Definitivamente aprendí alguito nuevo y le agradezco, Rafa, por el diálogo.
 
Upvote 0

Forum statistics

Threads
1,223,958
Messages
6,175,642
Members
452,663
Latest member
MEMEH

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top