在另一个 UDF 中调用 UDF

Posted

技术标签:

【中文标题】在另一个 UDF 中调用 UDF【英文标题】:Calling a UDF within another UDF 【发布时间】:2019-01-18 22:22:13 【问题描述】:

我需要从另一个模块(在同一个工作簿中)调用以前制作的 UDF 来构建另一个 UDF。如何调用第一个函数?

这适用于 Excel VBA。我已经构建了我的第一个函数,它计算产品在特定时间的账面价值。它位于一个名为“BookValue”的模块中,该函数名为“BookVal”。我尝试在下一个函数中调用它作为使用 Application.BookVal(args) 的应用程序,作为使用 UDF() 的 UDF,最近通过键入 NewFunction = BookValue(BookVal) 然后接下来的步骤......没有任何效果。全部返回#VALUE。

这是我的代码:

Option Explicit

Function BookVal(UseLife As Single, ResaleAge As Single, PurchPrice As Double, SalVal As Double) As Double


BookVal = PurchPrice - ((PurchPrice - SalVal) / UseLife) * ResaleAge


End Function

Function PostTaxSale(UseLife As Double, ResaleAge As Double, TaxRate As Double, ResaleVal As Double, PurchPrice As Double, SalVal As Double, BookVal As Double) As Double


PostTaxSale = BookVal(UseLife, ResaleAge, PurchPrice, SalVal)
PostTaxSale = ResaleVal - PostTaxSale
PostTaxSale = Tax * PostTaxSale
PostTaxSale = ResaleVal - PostTaxSale

End Function

这会产生#VALUE

但我希望代码从选定的单元格中提取为参数并返回等式的结果: 税后转售价值 = 转售价值 - 税收 *(转售价值 - 账面价值)。

【问题讨论】:

你能发布另一个 udf 吗? 还将包括货币在内的所有内容都更改为双倍。 我发布了两个 UDF。我只创建了一个,BookVal。你的意思是我应该将两个 UDF 中的所有内容都更改为 double 吗? 我没有看到 BookValue。我看到两个相同的 PostTaxSale。 是的,包括函数,以便它返回双精度:Function BookValue(...) As Double 【参考方案1】:

您必须提供所要求的所有标准:

 Function BookVal(UseLife As Double, ResaleAge As Double, PurchPrice As Double, SalVal As Double) As Double 
     BookVal = PurchPrice - ((PurchPrice - SalVal) / UseLife) * ResaleAge
 End Function

 Function PostTaxSale(UseLife As Double, ResaleAge As Double, TaxRate As Double, ResaleVal As Double, PurchPrice As Double, SalVal As Double) As Double
    PostTaxSale = BookVal(UseLife, ResaleAge, PurchPrice, SalVal)
    PostTaxSale = ResaleVal - PostTaxSale
    PostTaxSale = TaxRate * PostTaxSale
    PostTaxSale = ResaleVal - PostTaxSale    
 End Function

【讨论】:

以上是关于在另一个 UDF 中调用 UDF的主要内容,如果未能解决你的问题,请参考以下文章

UDF's in redshift : 可以在另一个中引用一个 udf

在另一个 UDF 中使用来自加载项的 UDF

如何在另一个数据库中创建引用调用者中正确 sys.objects 表的 UDF 或视图?

您可以从 Redshift 中的 python UDF 返回多个值吗?

BigQuery UDF 在另一个表中查找最大值

在另一个关系上使用 FOREACH 时将关系传递给 PIG UDF?