Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel:复制公式时复制相对引用中内置更改的函数_Vba_Excel - Fatal编程技术网

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

Vba Excel:复制公式时复制相对引用中内置更改的函数,vba,excel,Vba,Excel,我需要一个函数,将做什么Excel做时,你自动提取公式:改变引用自动 例如: 在A1中,我有“=A2+A3” 如果我复制这个来表示C3,它将有:“=C4+C5” 我需要在C3中写一个公式来产生这个 有什么想法吗?VBA解决方案也很受欢迎 澄清: 这需要尽可能的概括。 这意味着A1可以包含任何类型的公式,包含对其他单元格的引用。 例如:“=A2+A3”或“=VLOOKUP(A2,$C$1:$E$7,2,True)” 需要移动时,将此公式(无论它是什么)复制到另一个单元格(例如C3),不使用内置的复

我需要一个函数,将做什么Excel做时,你自动提取公式:改变引用自动

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

如果我复制这个来表示C3,它将有:“=C4+C5”

我需要在C3中写一个公式来产生这个

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

澄清:

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

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

我想可能需要在目标文件中编写一个函数来实现这一点


我曾尝试编写一个求值函数,我成功地从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)
=INDIRECT("R[1]C",0)+INDIRECT("R[2]C",0)
这将随着移动单元格而改变,以始终将单元格左侧的两个单元格相加

对于您的具体示例(A1=A2+A3 | | C3=C4+C5),它将如下所示:

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

希望能成功

你什么意思?这个公式需要做什么?我补充了一些澄清,谢谢你。如果你的问题得到了回答,请记住选择一个答案作为你的解决方案。它会让其他有同样问题的人知道什么对你有效…很高兴它有效-如果你的问题得到了回答,记得选择一个答案作为你的解决方案。它会让其他有同样问题的人知道什么对你有用