Excel:复制公式时复制相对引用中的内置更改的函数



我需要一个函数,当你处理公式时,它会自动执行Excel所做的操作:自动更改引用。

例如:在 A1 中,我有"= A2 + A3"

如果我复制这个说 C3,它将有:"= C4 + C5"

我需要在 C3 中编写一个公式来生成这个。

有什么想法吗?VBA解决方案也受到欢迎

澄清:

需要尽可能笼统。这意味着 A1 可以包含任何类型的任何公式,包含对其他单元格的引用。例如:"= A2 + A3"或"= VLOOKUP(A2, $C$1:$E$7, 2, True)"

如果需要移动,请将此公式(无论它是什么)复制到另一个单元格(例如 C3),没有内置的复制/粘贴,并让引用(未使用 $ 设置)相对更改。

我认为可能有一个函数可以在目标文件中写入来执行此操作。

我尝试编写一个 Eval 函数,我设法从 A1 复制公式并在 C3 中对其进行评估,但引用不会改变

这个问题缺乏一点清晰度,但我认为这可能是你所追求的:

=SUM(OFFSET(C3,1,0,2))

这将对给定单元格正下方的两个单元格求和(在本例中为单元格 C3 )。也就是说,它将C3偏移 1 行、0 列,并抓取 2 个单元格的高度,然后将结果传递给 SUM 函数。

此VBA代码将通过在活动单元格中设置公式来执行您正在寻找的操作:

ActiveCell.FormulaR1C1 = "=R[+1]C+R[+2]C"

您可以使用相对引用样式来使用 Indirect() 函数。

例如,如果您在 A1 中并且想要对 B1 和 C1 求和,它将如下所示:

A1:  =INDIRECT("RC[1]",0)+INDIRECT("RC[2]",0)

当您移动单元格以始终对单元格左侧的 2 个单元格求和时,这将发生变化。

对于您的特定示例 (A1 = A2 + A3 ||C3 = C4 + C5),如下所示:

=INDIRECT("R[1]C",0)+INDIRECT("R[2]C",0)

希望能解决问题!!

最新更新