将绝对引用转换为相对/间接引用的方法?

将绝对引用转换为相对/间接引用的方法?

是否有人知道一种方法或宏可以将公式转变为间接公式?

例如,我的工作表上的所有公式目前都写为:

=SUM(Sheet2!A1:A10),有没有办法可以快速将其更改为INDIRECT如下函数:

=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)

对于一个公式来说,改变它并不难,但对于 100 个公式来说,每个公式都包含 3-4 个对其他工作表的引用,因此纠正它会花费很长时间。

问题出在我正在对一个范围求和,但每次我在顶部插入新行时,公式都不会引用正确的单元格。试图找出一种方法来编写更好的公式,这样我就不必每次都手动更改行号了。

答案1

此宏将帮助您在工作表中查找和替换公式。

Sub FindReplaceFormula()

Cells.Replace What:="=SUM(Sheet2!A1:A10)", Replacement:= _
        "=SUM(INDIRECT("'Sheet2'!"&"A1"):Sheet2!$A$10)", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

您可以根据需要调整公式中的单元格引用。

相关内容