将活动单元格移动到公式所在的位置,将公式复制并粘贴到一行中

时间:2016-08-26 16:04:14

标签: excel-vba vba excel

我对VBA很新。我想用vba函数来实现以下目的:

Sheet1:

年----- | - 1 - | - 2 - | - 3 - |

收入| 10美元| 20美元| 30美元|

Sheet2:

年------ | 1 | 2 | 3 |

收入| X | Y | Z |

收入是指定的单元格。使用excel函数,我可以将每年的收入链接到工作表2或任何其他工作表上的单元格X到Z:

=Offset(Revenue,0,column()-1)

我希望在VBA功能中实现相同的功能,将公式缩短为Obtain(Revenue)。这是我到目前为止所提出的:

在VBA中:

Function Obtain(Account As Range)
Dim i As Integer
i = ActiveCell.Column - Account.Column
Obtain = Account.Offset(0, i).Value
End Function

在单元格X中:

=Obtain(Revenue)

虽然它几乎与公式版本相同,但是当我从X复制公式并将其粘贴到同一行的Y和Z时,我遇到了问题。我得到的是10美元,10美元,10美元,而不是10美元,10美元,10美元,因为Active.Cell已经被卡住了#34;到X,除非我移动鼠标光标并按Enter键为Y和Z中的每个功能刷新ActiveCell。我该怎么做才能获得VBA功能,这样当我将Obtain(Revenue)复制并粘贴到其他单元格时,excel知道我指的是哪一年的收入?

谢谢!

1 个答案:

答案 0 :(得分:2)

要检测细胞参考,您需要使用Application.Caller

Function Obtain(Account As Range)
Dim i As Integer
i = Application.Caller.Column - Account.Column
Obtain = Account.Offset(0, i).Value
End Function