lunes, septiembre 22, 2008

Cálculo manual y automático en Excel.

Hoy un compañero de trabajo vino a verme totalmente alarmado. Después de recuperar el aliento me cuenta que en "su Excel" es decir, la hoja en la llevaba trabajando varias horas, los resultados no cambiaban a pesar de que había cambiado los datos.
Para ponerlo con un ejemplo supongamos esta hoja donde en la celda C2 tenemos la fórmula A2*B2



Cambiamos la cantidad en la celda A2 a 100. El resultado en la celda C2 debería cambiar a 25000, pero



Sin embargo sí hay un cambio. En la parte inferior izquierda de la hoja aparece "Calcular". Este mensaje significa que Excel se encuentra en situación de cálculo manual y para recalcular las fórmulas de la hoja debemos apretar F9.

Para saber cuál es el método de cálculo del cuaderno con el que estamos trabajando podemos fijarnos en Herramientas-Opciones



Todo esto es seguramente "noticias de ayer" para la mayoría de mis lectores. Pero existen no pocos aspectos menos conocidos del método de cálculo de Excel que en ciertas circunstancias pueden ocasionar problemas, también a usuarios experimentados.

Excel tiene un mecanismo de cálculo muy sofisticado. Este mecanismo minimiza el tiempo de recálculo recalculando sólo las celdas que necesitan ser recalculadas. Sin extendernos en detalles técnicos podemos decir que hay algunas excepciones a esta regla. Por ejemplo, las funciones volátiles son calculadas con cada cambio en la hoja, también si este cambio no afecta a la fórmula en cuestión.
Cuando Excel está en modo de cálculo manual, ninguna celda es recalculada, tampoco aquellas que contienen fórmulas con funciones volátiles.

El método de cálculo es determinado por el método del primer cuaderno que abrimos al iniciar una sesión de Excel. Este es un detalle crítico: todo cuaderno que abramos después, no importa cuál sea el método de cálculo con que fue guardado, funcionará con el método de cálculo del cuaderno que inicio la sesión corriente de Excel.

Al cambiar el método de cálculo de un cuaderno, con el menú Herramientas-Opciones, se cambia el método de todos los cuadernos abiertos en esa sesión de Excel.

También después de cerrar todos los cuadernos de una sesión, al abrir un nuevo cuaderno el método de cálculo será el de último cuaderno que hayamos guardado. La excepción a esta regla es si creamos un cuaderno a partir de una plantilla.

Cuando trabajamos en situación de cálculo manual podemos pulsar la tecla F9 para recalcular todos los cuadernos abiertos en la sesión o Mayúsculas+F9 para recalcular sólo la hoja activa.
Otra combinación posible es Ctrl+Alt+F9 que realiza un recálculo completo (full calculation), es decir, de todas las fórmulas aún de aquellas cuyas variables no han cambiado.

También podemos usar F9 para momentáneamente el resultado de una fórmula o parte de ella, en la barra de fórmulas. Por ejemplo, activamos la celda C2 en nuestro ejemplo y seleccionamos la operación



Al apretar F9 vemos el resultado en la barra de fórmulas




Technorati Tags:

22 comentarios:

  1. Respecto al calculo manual o automatico. Tengo un libro en el cual el calculo se hace bastante lento (por lo que tenemos activado calculo manual) pero es necesario ver los resultados.
    Es posible que solo se calculen las formulas de la hoja actual.

    ResponderBorrar
  2. Puedes usar F9, como señalo en la nota, o puedes usar el botón "Calcular Hoja" en el formulario de Opciones (puedes ver la imagen en la nota).

    ResponderBorrar
  3. MUCHAS GRACIAS!!!!!!!!!!!!!!!!

    Son grandes!! :)

    ResponderBorrar
  4. Estimado Jorge, por favor me puedes orientar con respecto a un archivo Excel con acceso a datos, de 4500 filas, pero cada celda tiene Validación de Datos y Formato Condicional. El archivo se ha vuelto inmanejable, se tarda demasiado en actualizar la información obtenida de la base de datos. (luego esta información de actualizada en la base, de ahí que use Validación de datos)

    ResponderBorrar
  5. Hola,
    te sugiero que me envíes el archivo siguiendo las instrucciones que pongo en el enlace Ayuda (en la parte superior de la plantilla).

    ResponderBorrar
  6. Seria posible deshabilitar ese comportamiento de herencia del modo de cálculo, de forma que cada libro usase su propio modo de cálculo?

    ResponderBorrar
  7. No, hasta donde dan mis conocimientos. Siempre se puede programar un evento para poner la propiedad de cálculo a automática, pero hay que hacerlo para cada cuaderno.

    ResponderBorrar
  8. Serán noticias de ayer para muchos expertos, pero para mi ha sido la salvación del poco pelo que me queda porque me estaba estirando de él. Muchas gracias por este post.

    ResponderBorrar
  9. ¿Sabes cómo se realizarían estos cambios en Excel 2007?, quiero decir, de modo automático a modo manual y que solo me afectase a la hoja abieta, el resto del documento en automático.
    Gracias.

    ResponderBorrar
  10. En Excel 2007 en la pestaña Fórmulas-Cálculo-Opciones de cálculo.
    La propiedad se aplica a todo el cuaderno, no a una hoja en particular. Podrías programar un evento para una hoja determinada de manera que al activar la hoja, la propiedad pase a ser manual y al desactivar la hoja vuelva a automático.
    Si tomas en cuenta que las fórmulas de una hoja pueden estar ligadas a otras hojas del cuaderno, ¿cuál sería el sentido, aún si fuera que posible, que una hoja recalcule sólo en forma manual y el resto automáticamente?

    ResponderBorrar
  11. Hola Jorge, aprecio mucho tu trabajo, tengo una pregunta??
    Con Ctrl Alt y f9 se efectua un calculo total
    Con f9 se efectua un calculo de todos los libros
    Con Alt f9 se efectua un calculo de toda la hoja activo, pero...
    Cómo puedo cálcular unicamente: una fila, una columna, una celda o un rango?????
    Gracias de antemano

    ResponderBorrar
  12. No se puede. Excel recalcula todas las fórmulas en la hoja, bajo ciertas condiciones que no detallaré aquí. Esto se debe a la dependencia entre las celdas.

    ResponderBorrar
  13. Hola Jorge,
    Existe algún truco o algo que nos ayude a quitar el cálculo automático solo a unas hojas de Excel y no a todo el libro??

    ResponderBorrar
  14. La única forma que se me ocurre es usando eventos (macro). Un evento Activate para definir el cálculo como manual al ingresar a una hoja y uno Deactivate para volver al cálculo a automático cuando se deja esa hoja.

    ResponderBorrar
  15. Hola Jorge, te agradezco mucho, tendrás alguna entrada que me ayude con ese evento o te agradecería mucho si tu me ayuda a crear ese evento.

    Gracias desde México.

    ResponderBorrar
  16. Hola Luis, en el módulo de la hoja hay que poner dos subs:

    Private Sub Worksheet_Activate()
    Application.Calculation = xlManual
    End Sub

    hace que cuando se activa la hoja el método de cálculo del cuaderno pase a ser manual;

    Private Sub Worksheet_Deactivate()
    Application.Calculation = xlAutomatic
    End Sub

    cuando el usuario pasa a otra hoja el método de calculo vuelve a ser automático.

    ResponderBorrar
  17. Hola Jorge te agradezco enormemente, funciona de forma excelente.

    Gracias!!

    ResponderBorrar
  18. ¡¡gracias!! Nos salvaste :)

    ResponderBorrar
  19. Buenas tardes:

    Tengo un archivo con varias macros y formularios, me solicitaron un cambio y tuve que agregar una columna a la base de datos, después de ajustar todo el código, pero ahora no se que pasa que al mínimo cambio en una celda se tarda unos 3-4 segundos por celda, es desesperante no poder encontrar el problema, el archivo anterior funciona muy bien, no entiendo que pasó, he deshabilitado el cálculo automático y aunque mejora un poco sigue excesivamente lento, modificar una simple formula me muestra abajo a la derecha calculando 4 procesadores y tarda como escribí demasiado, empecé desde el archivo anterior a realizar cambios y después de importar los datos de otro archivo empezó el problema otra vez.

    Alguna sugerencia???.

    Gracias por compartir sus conocimientos.

    Saludos

    ResponderBorrar
  20. De tu descripción para desprenderse que el problema está relacionado al cálculos de fórmulas. Seguramente ésto está relacionado con la columna que agregaste. La influencia puedde darse por fórmulas contenidas en estas columnas, por ejemplo.
    Para decir algo más específico tendría que ver el modelo.

    ResponderBorrar
  21. Jorge excelente tus comentarios , si puedes ayudarme con lo siguiente , como calcular los autovalores y autovectores de una matriz en excell?

    ResponderBorrar
  22. Fijate si la técnica con MMULT que pongo en esta nota te ayuda.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.