如何分配计算功能

时间:2019-06-06 14:19:56

标签: excel vba function

我正在尝试创建UDF以最小化计算中的数据行。我想创建一个名为Rent_Rate的变量,并将其设置为等于Base_year_rent *((1 + Rent_escalator)^ Compound_period),而不是包括对特定单元格引用的陈述式计算,以便电子表格中的公式为“ = Rent_Rate * Units(静态单元格引用)”

我尝试定义变量并将每个变量设置为我要引用的引用单元格(在另一张纸上)。

Public Function Rent_Rate(Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long) As Long

    Base_year_rent = SH_Assumptions.Cells("C11")
    Rent_escalator = SH_Assumptions.Cells("C12")
    Compound_period = Year(Range(ActiveCell, ActiveCell.End(xlUp)).Select) - Year(SH_Assumptions.Cells("C4"))

    Rent_Rate = Base_year_rent * ((1 + Rent_escalator) ^ Compound_period)

End Function

我希望输出将是一个特定的值,等于输入到被引用的单元格中的值。

1 个答案:

答案 0 :(得分:1)

首先-Excel中的Function需要带有方括号,例如=Rent_Rate()

您可以 通过设置具有所需名称的命名范围来绕过该范围,该名称范围将调用您的UDF(例如,名为RentRate的命名范围,即=Rent_Rate())< / p>

下一个问题是您已给UDF 3自变量,但未将任何参数传递给它们。实际上,您将立即覆盖它们-只需Dim变量即可!

Public Function Rent_Rate() AS Long
    Dim Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long

    Base_year_rent = SH_Assumptions.Cells("C11").Value
    Rent_escalator = SH_Assumptions.Cells("C12").Value

    'What is this abomination supposed to do???
    Compound_period = Year(Range(ActiveCell, ActiveCell.End(xlUp)).Select) - Year(SH_Assumptions.Cells("C4"))

    Rent_Rate = Base_year_rent * ((1 + Rent_escalator) ^ Compound_period)

End Function

但是,这里仍然有一个大问题-为什么要在UDF中使用ActiveCellSelect 尤其是 Avoid Using Select。如果您尝试使用正在调用该函数的单元格,请查找Application.Caller