我需要一个功能,当你想要一个公式时,它将自动执行Excel所做的事情:自动更改引用。
例如: 在A1中我有" = A2 + A3"
如果我复制这个说C3,它将有:" = C4 + C5"
我需要在C3中编写一个可以产生这个的公式。
有什么想法吗?也欢迎VBA解决方案
澄清:
有需要,这应尽可能一般。 含义A1可以包含任何类型的任何公式,包含对其他单元格的引用。 例如:" = A2 + A3"或" = VLOOKUP(A2,$ C $ 1:$ E $ 7,2,True)"
需要移动有这个公式,无论它是什么,复制到另一个单元格(比如C3),没有内置的复制/粘贴,并且引用(不是用$设置)改变相对。
我认为可能有一个函数要写入目标文件来执行此操作。
我尝试过编写Eval函数,我设法从A1复制公式并在C3中进行评估,但引用不会改变
答案 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)
希望能有所作为!!