大家都知道您可以在Excel中输入公式。 (毕竟,没有公式的电子表格会是什么?)如果在公式中使用地址引用,则在插入或删除单元格,行或列时,这些引用会自动更新,并且这些更改会以某种方式影响地址引用。例如,考虑以下简单公式:

=IF(A7=B7,"YES","NO")

如果在B7上方插入一个单元格,则Excel会自动调整公式,使其看起来像这样:

=IF(A7=B8,"YES","NO")

但是,如果您不希望Excel调整公式怎么办?您可以尝试在地址上添加一些美元符号,但这只会影响以后复制的公式中的地址;如果您插入或删除影响公式的单元格,则不会影响公式本身。

使公式引用的最佳方法是“非调整式”。是修改公式本身以使用不同的工作表函数。例如,您可以在单元格C7中使用以下公式:

=IF(INDIRECT("A"&ROW(C7))=INDIRECT("B"&ROW(C7)),"YES","NO")

该公式的作用是根据该公式出现的任何单元格构造一个地址。ROW函数返回该单元格的行号(在这种情况下为C7,因此返回值7),然后使用INDIRECT函数进行引用构造的地址,例如A7和B7。如果在A7或B7上方插入(或删除)单元格,则不会干扰单元格C7中的引用,因为它只是巧妙地构造了一个全新的地址。

另一种方法是使用OFFSET函数构造类似类型的引用:

=IF(OFFSET($A$1,ROW()-1,0)=OFFSET($B$1,ROW()-1,0),"YES","NO")

该公式仅查看其位置(在C列中),并比较其左侧单元格中的值。如果您恰巧在A列或B列中插入或删除单元格,则此公式同样不受干扰。

最后一种方法(也许是最巧妙的方法)是使用命名公式。这是Excel命名功能的功能,大多数人很少使用。请按照下列步骤操作:

。选择单元格C2。

。从“插入”菜单中选择“名称”,然后从子菜单中选择“定义”。

Excel将显示“定义名称”对话框。 (请参见图1。)

。在“工作簿中的名称”框中,输入名称CompareMe。 (如果需要,可以使用其他名称。)

。删除“引用对象”框中的所有内容,然后将其替换为以下公式:

。单击确定。

至此,您已经创建了命名公式。您现在可以通过这种方式在C列的任何单元格中使用它:

=CompareMe

它会比较左侧两个单元格中的所有内容,就像您原来的公式设计的那样。更好的是,在插入或删除单元格时不会自动调整公式。

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

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

链接:/ excelribbon-Non-adjusting_References_in_Formulas [公式中的非调整引用]。