Actualización de ExcelExcel Recalculation

Hace referencia a: Excel 2013 | Office 2013 | Visual StudioApplies to: Excel 2013 | Office 2013 | Visual Studio

El usuario puede desencadenar la actualización en Microsoft Excel de varias maneras, por ejemplo:The user can trigger recalculation in Microsoft Excel in several ways, for example:

  • Introducir nuevos datos (si Excel se encuentra en modo Actualización automática, que se describe más adelante en este tema).Entering new data (if Excel is in Automatic recalculation mode, described later in this topic).

  • Indicar explícitamente a Excel recalcular todo o parte de un libro.Explicitly instructing Excel to recalculate all or part of a workbook.

  • Eliminar o insertar una fila o columna.Deleting or inserting a row or column.

  • Guardar un libro mientras la opción Recalcular antes de guardar está configurada.Saving a workbook while the Recalculate before save option is set.

  • Realizar determinadas acciones Filtro automático.Performing certain Autofilter actions.

  • Hacer doble clic en un divisor de fila o columna (en modo Actualización automática).Double-clicking a row or column divider (in Automatic calculation mode).

  • Agregar, editar o eliminar un nombre definido.Adding, editing, or deleting a defined name.

  • Cambiar el nombre de una hoja de cálculo.Renaming a worksheet.

  • Cambiar la posición de una hoja de cálculo en relación a otras hojas de cálculo.Changing the position of a worksheet in relation to other worksheets.

  • Ocultar o mostrar filas, pero no columnas.Hiding or unhiding rows, but not columns.

Nota

En este tema no distingue entre el usuario que presiona directamente una tecla o hace clic en el mouse, y las tareas que realiza un comando o una macro. El usuario ejecuta el comando, o hace algo para que el comando se ejecute, de modo que se considera una acción del usuario. Por lo tanto, la frase "el usuario" también significa "el usuario, o un comando o proceso iniciado por el usuario."This topic does not distinguish between the user directly pressing a key or clicking the mouse, and those tasks being done by a command or macro. The user runs the command, or does something to cause the command to run so that it is still considered a user action. Therefore the phrase "the user" also means "the user, or a command or process started by the user."

Dependencia, celdas desfasadas y celdas recalculadasDependence, Dirty Cells, and Recalculated Cells

En Excel, el cálculo de hojas de cálculo se puede ver como un proceso de tres fases:The calculation of worksheets in Excel can be viewed as a three-stage process:

  1. Construcción de un árbol de dependenciasConstruction of a dependency tree

  2. Construcción de una cadena de cálculoConstruction of a calculation chain

  3. Actualización de las celdasRecalculation of cells

El árbol de dependencias informa a Excel de las celdas que dependen de otras, o de igual forma, las celdas que son precedentes para otras. Desde este árbol, Excel construye una cadena de cálculo. La cadena de cálculo muestra todas las celdas que contienen fórmulas en el orden en que se deben calcular. Durante la actualización, Excel revisa esta cadena si encuentra una fórmula que depende de una celda que aún no se ha calculado. En este caso, la celda que se calcula y sus dependientes se mueven hacia abajo en la cadena. Por este motivo, a menudo se pueden mejorar los tiempos de cálculo en una hoja de cálculo que se ha abierto en los primeros ciclos de cálculo.The dependency tree informs Excel about which cells depend on which others, or equivalently, which cells are precedents for which others. From this tree, Excel constructs a calculation chain. The calculation chain lists all the cells that contain formulas in the order in which they should be calculated. During recalculation, Excel revises this chain if it comes across a formula that depends on a cell that has not yet been calculated. In this case, the cell that is being calculated and its dependents are moved down the chain. For this reason, calculation times can often improve in a worksheet that has just been opened in the first few calculation cycles.

Cuando se realiza un cambio estructural en un libro, por ejemplo, cuando se introduce una nueva fórmula, Excel reconstruye la cadena de cálculo y el árbol de dependencias. Cuando se introducen nuevos datos o fórmulas, Excel marca todas las celdas que dependen de los nuevos datos según necesiten actualizarse. Las celdas marcadas como de esta forma se conocen como desfasadas . Todos los dependientes directos e indirectos se marcan como desfasados, de modo que si B1 depende de A1 y C1 depende de B1, al cambiar A1, B1 y C1 se marcan como desfasados.When a structural change is made to a workbook, for example, when a new formula is entered, Excel reconstructs the dependency tree and calculation chain. When new data or new formulas are entered, Excel marks all the cells that depend on that new data as needing recalculation. Cells that are marked in this way are known as dirty . All direct and indirect dependents are marked as dirty so that if B1 depends on A1, and C1 depends on B1, when A1 is changed, both B1 and C1 are marked as dirty.

Si una celda depende, directa o indirectamente, de sí misma, Excel detecta la referencia circular y advierte al usuario. Normalmente es una condición de error que el usuario debe corregir y Excel proporciona herramientas gráficas y navegación muy útiles para ayudar a los usuarios a encontrar el origen de la dependencia circular. En algunos casos, es posible que quiera que esta condición exista deliberadamente. Por ejemplo, puede que quiera ejecutar un cálculo iterativo donde el punto de inicio para la siguiente iteración sea el resultado de la iteración anterior. Excel admite el control de los cálculos iterativos mediante el cuadro de diálogo Opciones de cálculo.If a cell depends, directly or indirectly, on itself, Excel detects the circular reference and warns the user. This is usually an error condition that the user must fix, and Excel provides very helpful graphical and navigational tools to help the user to find the source of the circular dependency. In some cases, you might deliberately want this condition to exist. For example, you might want to run an iterative calculation where the starting point for the next iteration is the result of the previous iteration. Excel supports control of iterative calculations through the calculation options dialog box.

Después de marcar las celdas como desfasadas, después de realizar la actualización a continuación, Excel vuelve a evaluar el contenido de cada celda desfasada en el orden determinado por la cadena de cálculo. En el ejemplo anterior, esto significa que B1 es la primera y C1 la siguiente. Esta actualización ocurre inmediatamente después de que Excel termine de marcar las celdas como desfasadas si el modo de actualización es automático; de lo contrario, ocurre posteriormente.After marking cells as dirty, when a recalculation is next done, Excel reevaluates the contents of each dirty cell in the order dictated by the calculation chain. In the example given earlier, this means B1 is first, and then C1. This recalculation occurs immediately after Excel finishes marking cells as dirty if the recalculation mode is automatic; otherwise, it occurs later.

A partir de Microsoft Excel 2002, el objeto Range de Microsoft Visual Basic para aplicaciones (VBA) admite un método, Range.Dirty, que marca las celdas como que necesitan un cálculo. Cuando se usa junto con el método Range.Calculate (consulte la siguiente sección), permite la actualización forzada de las celdas de un rango determinado. Esto resulta útil al realizar un cálculo limitado durante una macro, donde se configura el modo de cálculo manual, para evitar la sobrecarga de celdas de cálculo no relacionadas con la función de la macro. Los métodos de cálculo del rango no están disponibles a través de la API de C.Starting in Microsoft Excel 2002, the Range object in Microsoft Visual Basic for Applications (VBA) supports a method, Range.Dirty, which marks cells as needing calculation. When it is used together with the Range.Calculate method (see next section), it enables forced recalculation of cells in a given range. This is useful when you are performing a limited calculation during a macro, where the calculation mode is set to manual, to avoid the overhead of calculating cells unrelated to the macro function. Range calculation methods are not available through the C API.

En Excel 2002 y versiones anteriores, Excel compila una cadena de cálculo para cada hoja de cálculo de cada libro abierto. Esto resultaba complejo en la forma en que se gestionaban los vínculos entre hojas de cálculo y necesitaba cierto cuidado para garantizar una actualización eficaz. En concreto, en Excel 2000, debería minimizar las dependencias entre hojas de cálculo y las hojas de cálculo de nombres en orden alfabético para que las hojas que dependían de otras hojas aparecieran alfabéticamente después de las hojas de las que dependían.In Excel 2002 and earlier versions, Excel built a calculation chain for each worksheet in each open workbook. This resulted in some complexity in the way links between worksheets were handled, and required some care to ensure efficient recalculation. In particular, in Excel 2000, you should minimize cross-worksheet dependencies and name worksheets in alphabetical order so that sheets that depend on other sheets come alphabetically after the sheets they depend on.

En Excel 2007, se ha mejorado la lógica para habilitar la actualización en varios subprocesos para que las secciones de la cadena de cálculo no sean interdependientes y se puedan calcular a la vez. Puede configurar Excel para usar varios subprocesos en un equipo con procesador único o en un único subproceso de un equipo con varios procesadores o varios núcleos.In Excel 2007, the logic was improved to enable recalculation on multiple threads so that sections of the calculation chain are not interdependent and can be calculated at the same time. You can configure Excel to use multiple threads on a single processor computer, or a single thread on a multi-processor or multi-core computer.

Funciones asincrónicas definidas por el usuario (UDF)Asynchronous User Defined Functions (UDFs)

Cuando un cálculo encuentra un UDF asincrónico, guarda el estado de la fórmula actual, inicia la UDF y sigue evaluando el resto de celdas. Cuando el cálculo finaliza la evaluación de las celdas, Excel espera a que las funciones asincrónicas se completen, si hay funciones asincrónicas en ejecución. Ya que cada función asincrónica informa de los resultados, Excel finaliza la fórmula y ejecuta un nuevo paso de cálculo para volver a calcular las celdas que usan la celda con la referencia a la función asincrónica.When a calculation encounters an asynchronous UDF, it saves the state of the current formula, starts the UDF and continues evaluating the rest of the cells. When the calculation finishes evaluating the cells Excel waits for the asynchronous functions to complete if there are still asynchronous functions running. As each asynchronous function reports results, Excel finishes the formula, and then runs a new calculation pass to re-compute cells that use the cell with the reference to the asynchronous function.

Funciones volátiles y no volátilesVolatile and Non-Volatile Functions

Excel admite el concepto de una función volátil, es decir, una cuyo valor no se puede suponer que sea el mismo que la de la siguiente, incluso si ninguno de los argumentos (si toma alguno) ha cambiado. Excel vuelve a evaluar las celdas que contienen funciones volátiles, junto con todos los dependientes, cada vez que actualiza. Por este motivo, confiar demasiado en las funciones volátiles puede hacer que los tiempos de actualización sean lentos. Úselas con moderación.Excel supports the concept of a volatile function, that is, one whose value cannot be assumed to be the same from one moment to the next even if none of its arguments (if it takes any) has changed. Excel reevaluates cells that contain volatile functions, together with all dependents, every time that it recalculates. For this reason, too much reliance on volatile functions can make recalculation times slow. Use them sparingly.

Las siguientes funciones de Excel son volátiles:The following Excel functions are volatile:

  • NOWNOW

  • TODAYTODAY

  • RANDBETWEENRandBetween

  • OFFSETOFFSET

  • INDIRECTINDIRECT

  • INFO (en función de sus argumentos)INFO (depending on its arguments)

  • CELL (en función de sus argumentos)CELL (depending on its arguments)

  • SUMIF (en función de sus argumentos)CELL (depending on its arguments)

La API de C y VBA admiten maneras para informar a Excel que una función definida por el usuario (UDF) debe tratarse como volátil. Con VBA, UDF se declara como volátil del siguiente modo.Both the VBA and C API support ways to inform Excel that a user-defined function (UDF) should be handled as volatile. By using VBA, the UDF is declared as volatile as follows.

Function MyUDF(MakeMeVolatile As Boolean) As Double
   ' Good practice to call this on the first line.
   Application.Volatile (MakeMeVolatile)
   MyUDF = Now
End Function

De forma predeterminada, Excel asume que las UDF de VBA no son volátiles. Excel solo descubre que una UDF es volátil cuando la llama en primer lugar. Una UDF volátil se puede volver a cambiar a no volátil, como en este ejemplo.By default, Excel assumes that VBA UDFs are not volatile. Excel only learns that a UDF is volatile when it first calls it. A volatile UDF can be changed back to non-volatile as in this example.

Con la API de C, puede registrar una función XLL como volátil antes de la primera llamada. También le permite alternar el estado volátil de una función de hoja de cálculo.Using the C API, you can register an XLL function as volatile before its first call. It also enables you to switch on and off the volatile status of a worksheet function.

De forma predeterminada, Excel trata las UDF de XLL que toman argumentos de rango y que se declaran como equivalentes de hojas macros como volátiles. Puede desactivar este estado predeterminado con la función xlfVolatile al llamar a la UDF por primera vez.By default, Excel handles XLL UDFs that take range arguments and that are declared as macro-sheet equivalents as volatile. You can turn this default state off using the xlfVolatile function when the UDF is first called.

Modos de cálculo, comandos, actualización selectiva y tablas de datosCalculation Modes, Commands, Selective Recalculation, and Data Tables

Excel tiene tres modos de cálculo:Excel has three calculation modes:

  • AutomaticAutomatic

  • Automático excepto en tablasAutomatic Except Tables

  • ManualManual

Cuando se configura el cálculo en automático, la actualización ocurre después de cada entrada de datos y de determinados eventos, como los ejemplos de la sección anterior. Los libros grandes, el tiempo de actualización podría ser tan largo que los usuarios deberían limitar el momento en que esto ocurre, es decir, actualizar solo cuando sea necesario. Para habilitarlo, Excel admite el modo manual. El usuario puede seleccionar el modo en el sistema de menús de Excel o mediante programación con la API de C, COM o VBA.When calculation is set to automatic, recalculation occurs after every data input and after certain events such as the examples given in the previous section. For very large workbooks, recalculation time might be so long that users must limit when this happens, that is, only recalculating when they need to. To enable this, Excel supports the manual mode. The user can select the mode through the Excel menu system, or programmatically using VBA, COM, or the C API.

Las tablas de datos son estructuras especiales de una hoja de cálculo. En primer lugar, el usuario configura el cálculo de un resultado de una hoja de cálculo. Esto depende de una o dos entradas modificables clave y otros parámetros. Luego, el usuario puede crear una tabla de resultados para un conjunto de valores para una o ambas entradas clave. La tabla se crea con el Asistente para tablas de datos. Después de configurar la tabla, Excel inserta las entradas de una en una en el cálculo y copia el valor resultante en la tabla. Como se pueden usar una o dos entradas, las tablas de datos pueden ser de una o dos dimensiones.Data tables are special structures in a worksheet. First, the user sets up the calculation of a result on a worksheet. This depends on one or two key changeable inputs and other parameters. The user can then create a table of results for a set of values for one or both of the key inputs. The table is created by using the Data Table Wizard. After the table is set up, Excel plugs the inputs one-by-one into the calculation and copies the resulting value into the table. As one or two inputs can be used, data tables can be one- or two-dimensional.

La actualización de las tablas de datos se trata de manera diferente:Recalculation of data tables is handled slightly differently:

  • La actualización se controla de forma asincrónica para la actualización de libros normales de modo que las tablas de gran tamaño pueden tardar más en actualizarse que el resto del libro.Recalculation is handled asynchronously to regular workbook recalculation so that large tables might take longer to recalculate than the rest of the workbook.

  • Se toleran las referencias circulares. Si el cálculo que se usa para obtener el resultado depende de uno o varios valores de la tabla de datos, Excel no devuelve un error para la dependencia circular.Circular references are tolerated. If the calculation that is used to get the result depends on one or more values from the data table, Excel does not return an error for the circular dependency.

Dada la forma distinta en que Excel gestiona la actualización de las tablas de datos, y el hecho de que las tablas de gran tamaño que dependen de cálculos largos o complejos pueden tardar mucho tiempo en calcularse, Excel permite deshabilitar el cálculo automático de tablas de datos. Para ello, configure el modo de cálculo en Automático excepto en tablas de datos. Cuando el cálculo se encuentra en este modo, el usuario actualiza las tablas de datos presionando F9 o alguna operación de programación equivalente.Given the different way that Excel handles recalculation of data tables, and the fact that large tables that depend on complex or lengthy calculations can take a long time to calculate, Excel lets you disable the automatic calculation of data tables. To do this, set the calculation mode to Automatic except Data Tables. When calculation is in this mode, the user recalculates the data tables by pressing F9 or some equivalent programmatic operation.

Excel expone métodos a través de los cuales puede modificar el modo de actualización y controlarla. Estos métodos se han mejorado de versión a versión para permitir un control más preciso. En este sentido, las capacidades de la API de C reflejan las que estaban disponibles en la versión 5 de Excel y, por lo tanto, no proporcionan el mismo control que tenía con VBA en las versiones más recientes.Excel exposes methods through which you can alter the recalculation mode and control recalculation. These methods have been improved from version to version to allow for finer control. The capabilities of the C API in this regard reflect those that were available in Excel version 5, and so do not give you the same control that you have using VBA in more recent versions.

Estos métodos, que se usan con más frecuencia cuando Excel está en modo de cálculo manual, permiten el cálculo selectivo de libros, hojas de cálculo y rangos, una actualización completa de todos los libros abiertos e incluso completar la recompilación de la cadena de cálculo y del árbol de dependencias.Most frequently used when Excel is in manual calculation mode, these methods allow selective calculation of workbooks, worksheets, and ranges, complete recalculation of all open workbooks, and even complete rebuild of the dependency tree and calculation chain.

Cálculo de rangoRange Calculation

Pulsación de tecla: ningunoKeystroke: None

VBA: Range.Calculate (a partir de Excel 2000, modificado en Excel 2007) y Range.CalculateRowMajorOrder (a partir de Excel 2007)VBA: Range.Calculate (introduced in Excel 2000, changed in Excel 2007) and Range.CalculateRowMajorOrder (introduced in Excel 2007)

API de C: no se admiteC API: Not supported

  • Modo manualManual mode

    Actualiza solo las celdas del rango especificado independientemente de si están desfasadas o no. El comportamiento del método Range.Calculate ha cambiado en Excel 2007; sin embargo, el método Range.CalculateRowMajorOrder sigue admitiendo el comportamiento anterior.Recalculates just the cells in the given range regardless of whether they are dirty or not. Behavior of the Range.Calculate method changed in Excel 2007; however, the old behavior is still supported by the Range.CalculateRowMajorOrder method.

  • Modos Automático o Automático excepto en tablasAutomatic or Automatic Except Tables modes

    Actualiza el libro pero no fuerza la actualización del rango o de las celdas del rango.Recalculates the workbook but does not force recalculation of the range or any cells in the range.

Cálculo de la hoja de cálculo activaActive Worksheet Calculation

Pulsación de tecla: MAYÚS+F9Keystroke: SHIFT+F9

VBA: ActiveSheet.CalculateVBA: ActiveSheet.Calculate

API DE C: xlcCalculateDocumentC API: xlcCalculateDocument

  • Todos los modosAll modes

    Actualiza las celdas marcadas para el cálculo solo en la hoja de cálculo activa.Recalculates the cells marked for calculation in the active worksheet only.

Cálculo de la hoja de cálculo especificadaSpecified Worksheet Calculation

Pulsación de tecla: ningunoKeystroke: None

VBA: Worksheets( referencia ).CalculateVBA: Worksheets( reference ).Calculate

API de C: no se admiteC API: Not supported

  • Todos los modosAll modes

    Actualiza las celdas desfasadas y sus dependientes solo dentro de la hoja de cálculo especificada. La referencia es el nombre de la hoja de cálculo como una cadena o el número de índice del libro relevante.Recalculates the dirty cells and their dependents within the specified worksheet only. Reference is the name of the worksheet as a string or the index number in the relevant workbook.

    Excel 2000 y las versiones posteriores exponen una propiedad Boolean de hoja de cálculo, la propiedad EnableCalculation. Si se configura en True desde False desfasa todas las celdas de la hoja de cálculo especificada. En los modos automáticos, también desencadena la actualización de todo el libro.Excel 2000 and later versions expose a Boolean worksheet property, the EnableCalculation property. Setting this to True from False dirties all cells in the specified worksheet. In automatic modes, this also triggers a recalculation of the whole workbook.

    En el modo manual, el siguiente código provoca la actualización solo de la hoja activa.In manual mode, the following code causes recalculation of the active sheet only.

    With ActiveSheet
      .EnableCalculation = False
      .EnableCalculation = True
      .Calculate
    End With
    
    

Recompilación y actualización forzada del árbol de libroWorkbook Tree Rebuild and Forced Recalculation

Pulsación de tecla: CTRL+ALT+MAYÚS+F9 (a partir de Excel 2002)Keystroke: CTRL+ALT+SHIFT+F9 (introduced in Excel 2002)

VBA: Workbooks( referencia ).ForceFullCalculation (a partir de Excel 2007)VBA: Workbooks( reference ).ForceFullCalculation (introduced in Excel 2007)

API de C: no se admiteC API: Not supported

  • Todos los modosAll modes

    Hace que Excel recompile el árbol de dependencias y la cadena de cálculo de un libro determinado y fuerza una actualización de todas las celdas que contienen fórmulas.Causes Excel to rebuild the dependency tree and the calculation chain for a given workbook and forces a recalculation of all cells that contain formulas.

Todos los libros abiertosAll Open Workbooks

Pulsación de tecla: F9Keystroke: F9

VBA: Application.CalculateVBA: Application.Calculate

API de C: xlcCalculateNowC API: xlcCalculateNow

  • Todos los modosAll modes

    Actualiza todas las celdas que Excel marca como desfasadas, es decir, los dependientes de datos volátiles o modificados, y las celdas marcadas mediante programación como desfasadas. Si el modo de cálculo es Automático excepto en tablas, se calculan las tablas que necesiten una actualización y también todas las funciones volátiles y sus dependientes.Recalculates all cells that Excel has marked as dirty, that is, dependents of volatile or changed data, and cells programmatically marked as dirty. If the calculation mode is Automatic Except Tables, this calculates those tables that require updating and also all volatile functions and their dependents.

Recompilación y cálculo forzado de todos árboles de librosAll Open Workbooks Tree Rebuild and Forced Calculation

Pulsación de tecla: CTRL+ALT+F9Keystroke: CTRL+ALT+F9

VBA: Application.CalculateFullVBA: Application.CalculateFull

API de C: no se admiteC API: Not supported

  • Todos los modosAll modes

    Actualiza todas las celdas de todos los libros abiertos. Si el modo de cálculo es Automático excepto en tablas, fuerza la actualización de las tablas.Recalculates all cells in all open workbooks. If the calculation mode is Automatic Except Tables, it forces the tables to be recalculated.

Vea tambiénSee also

Actualización multiproceso en ExcelMultithreaded Recalculation in Excel

Tipos de datos utilizados por ExcelData Types Used by Excel

Administración de memoria en ExcelMemory Management in Excel

Conceptos de programación de ExcelExcel Programming Concepts