Mike tiene tres celdas (A1: A3) que muestran los resultados de los cálculos. Necesita una forma de determinar el valor máximo que ha aparecido alguna vez en cualquiera de estas celdas y tener ese valor almacenado en la celda E5. Sabe cómo sacar el máximo de los tres, pero cuando vuelve a calcular la hoja de trabajo, si los valores en A1: A3 son menores que el valor máximo en E5 (basado en determinaciones previas del máximo en A1: A3), entonces E5 no debería cambiar. En otras palabras, E5 solo debería cambiar si lo que está en A1: A3 es mayor que lo que está en E5. Mike no está seguro de cómo realizar ese cálculo.

Hay dos formas de resolver este problema. La primera es crear una fórmula simple que se colocaría en la celda E5:

=MAX(A1:A3,E5)

La función MAX examina los diversos valores a los que hace referencia y luego devuelve el máximo de ellos, exactamente lo que se desea. Sin embargo, dado que esta fórmula se coloca en la celda E5 y también hace referencia a E5, devolverá un error. Esto se debe a que la fórmula crea una referencia circular. Excel puede manejarlos, pero necesita hacer un pequeño cambio de configuración para hacerlo:

  1. Muestra el cuadro de diálogo Opciones de Excel. (En Excel 2007, haga clic en el botón Office y luego en Opciones de Excel. En Excel 2010 y versiones posteriores, muestre la pestaña Archivo de la cinta y luego haga clic en Opciones).

  2. Haga clic en Fórmulas en el lado izquierdo del cuadro de diálogo. (Ver figura 1)

  3. Asegúrese de que la casilla de verificación Habilitar cálculo iterativo esté seleccionada.

  4. Haga clic en Aceptar.

Ahora Excel manejará referencias circulares, como la fórmula simple que puso en la celda E5.

El segundo enfoque consiste en utilizar una macro para realizar el cálculo. Este enfoque puede ser el preferido porque es posible que no desee (por alguna razón) habilitar referencias circulares en su libro de trabajo. El siguiente es en realidad un controlador de eventos, agregado al código de la hoja de trabajo. (Método más sencillo:

Haga clic con el botón derecho en la pestaña de la hoja, muestre la ventana de código del menú contextual resultante y agregue la macro a esa ventana de código).

Private Sub Worksheet_Calculate()

Dim dMax As Double     dMax = Application.WorksheetFunction.Max(Range("A1:A3"))

If dMax > Range("E5") Then         Application.EnableEvents = False         Range("E5") = dMax         Application.EnableEvents = True     End If End Sub

La macro se activa cada vez que se recalcula la hoja de trabajo. Toma el máximo de A1: A3 y lo compara con lo que está en E5. Solo si es mayor, ese valor se coloca en E5.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (10916) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Only_Showing_the_Maximum_of_Multiple_Iterations [Solo mostrando el máximo de múltiples iteraciones].