需要特殊字符,防止Excel公式在被引用单元格移动时更改其引用

需要特殊字符,防止Excel公式在被引用单元格移动时更改其引用,excel,Excel,使用特殊字符“$”可以防止Excel公式在复制单元格本身时更改其引用(例如“$A$1”)。 但是,是否还有一个特殊字符可以防止Excel公式在被引用单元格移动时更改其引用 下面是一个例子: 我有: 现在我将单元格“A1:A3”向下移动一行。因此,单元格“C1:C3”中的公式更改: 但我不希望单元格“C1:C3”中的公式发生变化。它们应该保持不变: 如果您总是想引用A1,那么就不能仅使用A1作为引用,因为正如您所看到的,如果在上面插入行,Excel将调整该引用 相反,使用索引(A:A,1)。它

使用特殊字符“$”可以防止Excel公式在复制单元格本身时更改其引用(例如“$A$1”)。
但是,是否还有一个特殊字符可以防止Excel公式在被引用单元格移动时更改其引用

下面是一个例子:

我有:

现在我将单元格“A1:A3”向下移动一行。因此,单元格“C1:C3”中的公式更改:

但我不希望单元格“C1:C3”中的公式发生变化。它们应该保持不变:

如果您总是想引用A1,那么就不能仅使用A1作为引用,因为正如您所看到的,如果在上面插入行,Excel将调整该引用

相反,使用
索引(A:A,1)
。它将始终返回A列第一行的值

=if(index(A:A,1)=index(B:B,1),"same","not")
评论后编辑:如果这不符合您的目的,您可能需要重新设计电子表格,这样事情的位置就不会一直改变。看起来您正在列表顶部添加新数据


Excel自上而下工作,如果在列表的底部添加新数据,事情会简单得多。如果要按逆时间顺序对数据进行排序,则始终可以使用其他Excel工具更改排序顺序。

使用
C1
中的公式:

=IF(INDEX(A:A,ROW(ZZ1))=INDEX(B:B,ROW(ZZ1)),"Same","Not same")
然后抄下来

试试公式:

=IF(INDEX(A:A,ROW(1:1))=INDEX(B:B,ROW(1:1)),"Same","Not same")

该公式始终有效,无论除了列
A
B

之外删除了什么列,您都可以使用索引,而不是直接引用
A1
A2
A3
。是的,这适用于我的示例。但这更像是一种变通方法,也不是很好,因为使用“INDEX”时,您必须手动键入每个公式(单元格“C1:C3”),因为您无法通过拖动单元格“C1”的右下角来复制公式。更舒适的是,当被引用的单元格移动时,一个特殊字符可以防止公式更改其引用,就像特殊字符“$”可以防止公式在复制单元格时更改其引用一样。但是我恐怕这个特殊的角色还没有出现。请随时提出这个建议。这就是Excel的工作方式。是的,这看起来很不错。但正如下文所述,这是一个解决办法。更舒适的是,当被引用的单元格移动时,一个特殊字符可以防止公式更改其引用,就像特殊字符“$”可以防止公式在复制单元格时更改其引用一样。但是恐怕这个特殊的角色还没有出现。备注:我们也可以使用“行(Z1)”而不是“行(ZZ1)”,不是吗?对于Excel来说,使用行(某些单元格)比只使用您想要使用的数字要多。但更重要的是,如果在第1行之前插入一行,则使用
Row(ZZ1)
将变为
Row(ZZ2)
,因此,如果使用Row(cell address)而不是数字,则将Index()与固定数字一起使用的整个概念将不起作用。@seky Yes,您可以使用第一行中的任何单元格地址,只要该单元格未被触碰。@teylyn首先,我回答了一个问题
当被引用单元格被移动时,如何防止Excel公式更改其引用,我建议的公式可以做到这一点。其次,如果插入了整行,那么用户也可能期望公式与其所有引用一起下移。所以请取消你的否决票。首先,这不是我的否决票,所以我对此无能为力。第二,如果用户在ZZ1上方插入一行,您的方法也会失败,因此它不是非常健壮。是的,我认为这是最优雅的解决方案,因为在这里您仍然可以看到列和行。非常感谢,欢迎。此公式非常有用,尤其是在比较两组
VbModules
时,您需要删除或插入其中一列中的行以使其与另一列对齐。