大家都知道您可以在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培训的来源。

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

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