我正在尝试使用.SpillParent
and .SpillingToRange
在某些 UDF 中的 Excel 中的 Range 对象上,当该范围不在调用 UDF 的同一工作表上时,会出现意外行为。
(我知道如果我使用“#”溢出运算符,我不需要这样的 UDF;我只是使用一个非常简单的示例来说明问题)。
Function MyUDF(ByRef Target As Range) As Range
Set MyUDF = Target.SpillParent
End Function
如果 [Sheet2!$C$2:$C$10] 是一个范围,其结果来自 $C$2 中的公式,并且在 [Sheet1!$A$1] 中,我有“=MyUDF(Sheet2!C5)”,我得到从 [Sheet1!$C$2] 返回的值,而不是 [Sheet2!$C$2]。
Example:
对于 [Sheet2!$C$2:$C$10] = {1,2,3,4,5,6,7,8,9},
[表 1!$C$2] = 57,
Sheet1 上的任何单元格中包含“=MyUDF(Sheet2!C5)”会返回“57”,而不是“1”
我的实际功能更复杂,但这个简单的例子说明了异常情况。我可以使用以下方法跳过一些圈子.Address
和字符串操作,但在我看来我应该得到 Sheet2 上溢出范围的实际第一个单元格...