Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Excel 公式中使用的自定义vba函数中当前单元格的范围_Excel_Function_Vba_Formula - Fatal编程技术网

Excel 公式中使用的自定义vba函数中当前单元格的范围

Excel 公式中使用的自定义vba函数中当前单元格的范围,excel,function,vba,formula,Excel,Function,Vba,Formula,我想编写一个函数Foo,可以在公式中使用它来返回所用单元格上方的单元格内容 例如,如果在单元格B2中,我写入=Foo()我想获取B1的内容 我知道我可以直接写=B1。显然,我在简化这个案例。 那么,这个函数是什么样子的呢 更准确地说,我希望(也)能够从其他函数中使用此函数(例如,将上面的单元格相乘的Bar(factor)函数,因此我可以编写=Bar(2))这通常是一个坏主意,因为您必须使函数不稳定,对计算产生连锁反应等 Public Function Foo() As Variant A

我想编写一个函数
Foo
,可以在公式中使用它来返回所用单元格上方的单元格内容

例如,如果在单元格B2中,我写入
=Foo()
我想获取B1的内容

我知道我可以直接写
=B1
。显然,我在简化这个案例。

那么,这个函数是什么样子的呢


更准确地说,我希望(也)能够从其他函数中使用此函数(例如,将上面的单元格相乘的
Bar(factor)
函数,因此我可以编写
=Bar(2)

这通常是一个坏主意,因为您必须使函数不稳定,对计算产生连锁反应等

Public Function Foo() As Variant
    Application.Volatile
    Foo = Application.Caller.Offset(-1, 0)
End Function

这通常是一个坏主意,因为您必须使函数不稳定,并对计算产生连锁效应等

Public Function Foo() As Variant
    Application.Volatile
    Foo = Application.Caller.Offset(-1, 0)
End Function
这很有效

公共函数Foo()作为变量
Foo=Application.ThisCell.Offset(-1,0)
端函数
这很有效

公共函数Foo()作为变量
Foo=Application.ThisCell.Offset(-1,0)
端函数

您为什么要这样做,而不是,例如,
=Foo(B1)
=Bar(B1,2)
?硬编码相对单元格引用就像自找麻烦……为什么要这样做,而不是,例如,
=Foo(B1)
=Bar(B1,2)
?硬编码相对单元格引用就像自找麻烦……谢谢,也许你也能帮上忙?:谢谢,也许你也能帮上忙?:欢迎继续,谢谢你的回答!如果你能提供一个简洁的描述,这会很有帮助。请注意,这个函数不能正常工作:当下面的单元格更改时,它不会被重新计算,因为它引用了一个不在函数参数列表中的单元格:你需要使它不稳定以防止出现这种情况。欢迎继续,谢谢你的回答!如果你能提供一个简洁的描述来说明它是如何工作的,这会很有帮助。请注意,这个函数不能正常工作:当下面的单元格更改时,它不会被重新计算,因为它引用了一个不在函数参数列表中的单元格:你需要将它设置为不稳定的,以防止出现这种情况。