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

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

=MAX(A1:A3,E5)

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

。显示“ Excel选项”对话框。 (在Excel 2007中,单击Office按钮,然后单击Excel选项。在Excel 2010和更高版本中,显示功能区的“文件”选项卡,然后单击“选项”。)

。单击对话框左侧的“公式”。 (请参见图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培训的来源。

本技巧(10916)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: