Mike有三个单元格(A1:A3),它们显示计算结果。他需要一种方法来确定出现在任何这些单元格中的最大值,并将该值存储在单元格E5中。他知道如何从三个中取最大值,但是当他重新计算工作表时,如果A1:A3中的值小于E5中的最大值(根据先前对A1:A3中最大值的确定),则E5不应该改变。换句话说,仅当A1:A3中的值大于E5中的值时,E5才应该更改。 Mike不确定如何执行这样的计算。

有两种方法可以解决此问题。首先是创建一个简单的公式,将其放在单元格E5中:

=MAX(A1:A3,E5)

MAX函数检查它引用的各种值,然后返回其中的最大值—正是所需的值。但是,由于此公式放置在单元格E5中,并且还引用了E5,因此它将返回错误。这是因为公式创建了循环引用。 Excel可以处理这些,但是您需要进行一些小的配置更改:

。从工具菜单中选择选项。 Excel将显示“选项”对话框。

。显示“计算”选项卡。 (请参见图1。)

。确保选中“迭代”复选框。

。单击确定。

现在,Excel将处理循环引用,例如您在单元格E5中输入的简单公式。

第二种方法是使用宏执行计算。这种方法可能是首选方法,因为您可能不希望(由于某些原因)在工作簿中启用循环引用。以下实际上是一个事件处理程序,已添加到工作表的代码中。 (最简单的方法:

右键单击工作表选项卡,从出现的上下文菜单中显示代码窗口,然后将宏添加到该代码窗口。)

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

每次重新计算工作表时都会触发该宏。它获取A1:A3的最大值并将其与E5中的值进行比较。仅当该值较大时,才将该值放入E5。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10915)适用于Microsoft Excel 97、2000、2002和2003。您可以在以下位置找到适用于Excel功能区界面(Excel 2007和更高版本)的本技巧的版本:

链接:/ excelribbon-Only_Showing_the_Maximum_of_Multiple_Iterations [仅显示多次迭代的最大值]。