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

时间:2014-11-26 14:01:40

标签: excel vba excel-vba

我需要一个功能,当你想要一个公式时,它将自动执行Excel所做的事情:自动更改引用。

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

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

我需要在C3中编写一个可以产生这个的公式。

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

澄清:

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

需要移动有这个公式,无论它是什么,复制到另一个单元格(比如C3),没有内置的复制/粘贴,并且引用(不是用$设置)改变相对。

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

通过在活动单元格中设置公式,此VBA代码将执行您所看到的内容:

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

答案 2 :(得分:0)

您可以使用相对参考样式使用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)

希望能有所作为!!